我正在使用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 -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”?如何解决它?
我发布了一个答案,讨论在这个问题上行动电缆如何工作。你能帮助我更好地理解这个问题吗?谢谢 –