Info
Content

Channels

Channel name rules

Канал это маршрут для публикаций
Клиенты подписываются на канал и получают сообщения опубликованные в него

Каналы эфемерны, их не надо создавать или удалять явно, они существуют пока существуют подписчики (подписчик подписался - канал создался, подписчиков не осталось - канал удалился)
Соответственно чтобы было куда публиковать сообщения, нужно чтобы были подписчики

Неймспейсы позволяют определять кастомные опции для групп каналов

Имя канала может содержать только ASCII символы и быть не длиннее 255 символов
Несколько символов зарезервированы:

  • : – for namespace channel boundary. Неймспейс это часть имени канала, поэтому public:chat и chat это два разных канала
  • $ – for private channel prefix. Если имя канала начинается с доллара, то это приватный канал. На такой канал клиента должен подписать бэкенд (ex: $public:chat)
  • # – for user channel boundary. После решетки через запятую указываются user id юзеров которые могут подписываться на этот канал (ex: dialog#42,43)
  • * – for the future Centrifugo needs
  • & – for the future Centrifugo needs
  • / – for the future Centrifugo needs

Channel options

Используя опции можно изменять поведение каналов глобально или per namespace

  • publish - позволяет клиентам публиковать сообщения. Не рекомендуется, но иногда полезно
  • subscribe_to_publish - заставляет клиента быть подписанным на канал куда он хочет публиковать
  • anonymous - влючает анонимный доступ к каналу
  • presence - включает инфу по каналам (подписчики, пользователи, и тд)
  • presence_disable_for_client - запрещает пользователям смотреть presence инфу
  • join_leave - включает/выключает join/leave messages
  • history_size - размер истории для каналов
  • history_ttl - длительность истории (чтобы история работала нужно указывать обе опции одновременно)
  • position - позволяет центрифуге следить за положением пользователя в стриме (не догнал как это полезно)
  • recover - связано с предыдущей опцией
  • history_disable_for_client - позволяет оставить доступ к истории только для server-side api
  • protected - управляет возможностью пользователей подписываться на любые каналы или только на user-limited
  • proxy_subscribe - проксевая опция
  • proxy_publish - проксевая опция
  • subscribe_proxy_name - проксевая опция
  • publish_proxy_name - проксевая опция

Опции можно прописывать в корне конфига (тогда они будут глобальными), а можно описать для каждого неймспейса отдельно

{
    "token_hmac_secret_key": "very-long-secret-key",
    "api_key": "secret-api-key",
    "anonymous": true,
    "publish": true,
    "presence": true,
    "join_leave": true,
    "history_size": 10,
    "history_ttl": "30s",
    "namespaces": [
        {
          "name": "public",
          "publish": true,
          "anonymous": true,
          "history_size": 10,
          "history_ttl": "300s",
          "recover": true
        },
        {
          "name": "gossips",
          "presence": true,
          "join_leave": true
        }
    ]
}
No Comments
Back to top