3

アクションケーブルに関するドキュメントはあまりないので、私はこれについて少し迷っています. Rails 5アプリで遊んでいます.rails5アプリを純粋にAPIとして使用し、JSを別の場所でホストしようとしています。したがって、actioncable サーバーを起動すると、組み込みのブラウザー ソケット サポートを使用するだけで、Websocket に非常に簡単に接続できます。

var socket = new WebSocket('localhost:3000/cable')
// and then do
socket.onmessage = function(data) { console.log(data) }

無事接続できました。私はの形でpingを取得しています

MessageEvent {isTrusted: true, data: "{"type":"ping","message":1462992407}", ... etc

ただし、クライアントにメッセージをブロードキャストできないようです。私は試した:

ActionCable.server.broadcast('test',{ yes: true })

しかし、入ってくるのは ping だけです。ActionCable には、Rails アプリで「そのまま機能する」チャネルやもののように、まだ完全には理解していない独自の概念が付属しています。しかし、actioncable のソケット サーバーを使用して別のスタンドアロン JS アプリを正常に構築するにはどうすればよいでしょうか?

4

1 に答える 1

0

ActionCable を iOS アプリケーションで使用しています。すべてがうまく機能します。

ActionCable は pub/sub パターンを使用します。

Pub/Sub または Publish-Subscribe は、個々の受信者を指定せずに、情報の送信者 (パブリッシャー) が受信者 (サブスクライバー) の抽象クラスにデータを送信するメッセージ キュー パラダイムを指します。Action Cable は、このアプローチを使用して、サーバーと多くのクライアントの間で通信します。

つまり、最初に新しいチャネルを作成する必要があります。

rails g channel my_channel

次に、チャネルでテスト メッセージを送信します。

# app/channels/my_channel.rb
class MyChannel < ApplicationCable::Channel
  def subscribed
    stream_from "my_channel"
    ActionCable.server.broadcast "my_channel", 'Test message'
  end

  def unsubscribed
    # Any cleanup needed when channel is unsubscribed
  end
end

次に、以下をサーバーに送信します。

{'command': 'subscribe', 'identifier': {\'channel\':\'MyChannel\'}}

その見返りに、最初のフレームを取得します。

于 2016-10-27T16:10:53.263 に答える