我是websockets的新手,我正在尝试将消息发送到需要订阅请求的现有websocket服务器。我试过了:
require 'em-websocket-client'
EM.run do
ws = EventMachine::WebSocketClient.connect("ws://localhost:3000")
ws.send_msg "this is a test message"
end
但我得到
'undefined method `version' for nil:NilClass'.
我可以通过用
替换send_mess行来正确地从服务器读取流数据 ws.stream do |msg|
puts "received msg <#{msg}>"
end
所以至少我知道我正确连接到服务器。我做错了什么?
答案 0 :(得分:2)
显然你必须将send_msg
的电话放在WebSocketClient
callback
功能中,如下所示:
require 'em-websocket-client'
EM.run do
ws = EventMachine::WebSocketClient.connect("ws://localhost:3000")
ws.callback do
ws.send_msg "this is a test message"
end
end
请参阅this了解更多信息(但遗憾的是,还不够)。