Действие Кабель для уведомления в каждом пространстве имен в рельсах - PullRequest
0 голосов
/ 22 мая 2018

В моем проекте три пространства имен: Trainee, Trainer и Manager.Я использую три шаблона для каждого пространства имен.Я использую кабель действия для уведомления (который использует веб-сокет) в проекте.Каждое пространство имен имеет разные уведомления.Как я могу создать пространство имен для канала?

1 Ответ

0 голосов
/ 31 мая 2018

Вы не создадите пространство имен для канала, вы просто создадите отдельные потоки для подписки, как если бы это было для комнат чата.

При создании подписки вы можете передать параметр "пространство имен"Примерно так:

App.cable.subscriptions.create({
  channel: 'NotificationChannel', namespace: <%= namespace %>
}, {}

затем подпишитесь на другие потоки на основе параметра пространства имен:

class NotificationChannel < ApplicationCable::Channel
  def subscribed
    stream_from notification_stream
  end

  def receive(data)
    ActionCable.server.broadcast notification_stream, data.fetch('message')
  end

  private

  def notification_stream
    "#{params['namespace']}_stream"
  end

end
...