Rails WebSocket 客户端永远不会触发 OnOpen
Posted
技术标签:
【中文标题】Rails WebSocket 客户端永远不会触发 OnOpen【英文标题】:Rails WebSocket Client never fires OnOpen 【发布时间】:2014-03-25 00:55:19 【问题描述】:我将Faye WebSockets 用于我的rails 应用程序,并尝试连接到http://www.websocket.org/echo.html 上预先存在的websocket 服务器。
但是,我的 websocket 的 OnOpen 事件从未被触发,并且根本没有任何错误或状态。 Rails 代码如下所示:
def make_websocket
if @@ws
return
end
p "Making the websocket"
ws = Faye::WebSocket::Client.new('ws://echo.websocket.org/')
ws.on :open do |event|
p "connection has been opened"
@@ws = ws
self.clear_queue
end
ws.on :message do |event|
p [:message, event.data]
end
ws.on :error do |event|
p "WebSockets error"
p [:error, event.data]
end
ws.on :close do |event|
p [:close, event.code, event.reason]
@@ws = nil
end
end
但是,在日志文件中唯一可以找到的是“制作 websocket”。是否有明显的我遗漏的东西,或者是否有人有不同的宝石可以用作 Rails 服务器中的客户端? TIA。
【问题讨论】:
【参考方案1】:代码需要包装在EM.run
块中
【讨论】:
以上是关于Rails WebSocket 客户端永远不会触发 OnOpen的主要内容,如果未能解决你的问题,请参考以下文章
从 rails runner 内部触发/订阅 websocket-rails 事件
如果服务器崩溃,Websocket onclose/onerror 事件不会触发
Rails 操作以状态 200 运行,但未访问模板且未触发 jQuery