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 事件不会触发

websocket rails javascript不工作

Rails 操作以状态 200 运行,但未访问模板且未触发 jQuery

用于 websocket-rails gem 的 Ruby websocket 客户端

Rails 5:ActionMailer 的“deliver_later”永远不会在生产中交付