Module: ActionCable::Server::Broadcasting

Included in:
Base
Defined in:
actioncable/lib/action_cable/server/broadcasting.rb

Overview

Трансляция - это возможность различных частей вашего приложения отправлять сообщения подписчикам канала. Как указывалось, в Канале большую часть времени эти трансляции читаются непосредственно подписчиками, подписавшимися на трансляцию с этим именем. Давайте объясним пример с полным стеком:

class WebNotificationsChannel < ApplicationCable::Channel
  def subscribed
    stream_from "web_notifications_#{current_user.id}"
  end
end

# Это вызывается где-нибудь в приложении, возможно из NewCommentJob:
ActionCable.server.broadcast \
  "web_notifications_1", { title: "New things!", body: "All that's fit for print" }

# На клиенте CoffeeScript полагаем, что уже запросили право посылать веб-уведомления:
App.cable.subscriptions.create "WebNotificationsChannel",
  received: (data) ->
    new Notification data['title'], body: data['body']

Defined Under Namespace

Classes: Broadcaster

Instance Method Summary collapse

Instance Method Details

#broadcast(broadcasting, message, coder: ActiveSupport::JSON) ⇒ Object

Транслируем хэш непосредственно названный broadcasting. Который позже будет закодирован в JSON.


22
23
24
# File 'actioncable/lib/action_cable/server/broadcasting.rb', line 22

def broadcast(broadcasting, message, coder: ActiveSupport::JSON)
  broadcaster_for(broadcasting, coder: coder).broadcast(message)
end

#broadcaster_for(broadcasting, coder: ActiveSupport::JSON) ⇒ Object

Возвращает транслятор (broadcaster), названный broadcasting, который может быть использован повторно. Удобно, если у вас есть объект, который может потребоваться в нескольких местах для повторной трансляции снова и снова.


27
28
29
# File 'actioncable/lib/action_cable/server/broadcasting.rb', line 27

def broadcaster_for(broadcasting, coder: ActiveSupport::JSON)
  Broadcaster.new(self, String(broadcasting), coder: coder)
end