Rails Grape API (local.host:3001 で実行) でwebsocket-rails (スタンドアロン、local.host:3245 の redis と同期)を使用しようとしています。
次に、次の例を使用して、Grape API エンドポイントの 1 つからチャネル A にメッセージを送信しようとします。
WebsocketRails[:a_channel].trigger('welcome_message', 'Hello world!')
次に、Rails クライアント (local.host:3005 で実行) で、メッセージを取得してブラウザーに表示しようとします。WebsocketRails js クライアントを使用して、サーバーに接続できます。チャンネルにサブスクライブし、 wikiで提案されているイベントにバインドします。
var dispatcher = new WebSocketRails('local.host:3245/websocket');
var channel = dispatcher.subscribe('a_channel');
channel.bind('welcome_message', function(data) {
console.log('channel event received: ' + data);
});
ただし、console.log には何も表示されませんが、websocket_rails.log を見ると次のように表示されます。
[2015-08-18 10:03:23.184] [[32mChannel[0m] [a_channel] {"welcome_message"=>"Hello world!"}
redis を使用redis-cli monitor
して見ると、websocket_rails キーが表示されません (少なくとも、そこにあるはずだと思います...)。
chrome developer environment --> websockets --> headers
クライアントとサーバー間の ping/pong が表示されますが、すべての変数が空です。
WebsocketControllers または events.rb ルートを使用しないでください。このwikiページに基づいて、私はそうする必要はないと思いました..また、APIのバージョン管理のために、コントローラーを使用せず、Grapeファイルにすべてを保持しています。
この問題を解決するための提案/アイデアはありますか?
前もって感謝します!
ノート:
- レール 4.2.3
- ルビー 2.1.0
- API サーバーは Unicorn で実行されています
- レールクライアントはシンで実行されています