Rails5を使用してアプリケーションのAPIプロバイダを作成していますが、websocketを使用する必要があります。ブロードキャストを受信していません
routes.rbを
Rails.application.routes.draw do
mount ActionCable.server => '/cable'
get '/testbroad', to: 'messages#testbroad'
end
messages_channel.rb
class MessagesChannel < ApplicationCable::Channel
def subscribed
stream_from 'messages'
end
end
messages_controller.rb
:その後、私はテストのための非常に簡単なコードを作成しましたその後
class MessagesController < ApplicationController
def testbroad
ActionCable.server.broadcast('messages',
message: 'foo')
head :ok
end
end
、私はそれが仕事だcURLの
➜ ~ curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Host: ws://localhost:3000/cable" http://localhost:3000/cable
HTTP/1.1 101 Web Socket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
WebSocket-Location: ws://ws://localhost:3000/cable/cable
{"type":"welcome"}
を使用して接続を開始しました!しかし、私がブロードキャストを送信しようとすると...
➜ ~ curl http://localhost:3000/testbroad
Railsのコンソールは成功を示していますが、cURLには何のメッセージも表示されません。なぜ私は "foo"というメッセージを受け取らなかったのですか?それを解決するには?
私は、この問題のアクションケーブルがどのように機能するかについての回答を掲載しました。この問題をよりよく理解できるように教えてください。ありがとう –