4

我很难让 EventMachine Web-socket 客户端wss://使用 TLS 连接到安全的 Web-socket 服务器。

我有一个 EventMachine web-socket 服务器设置并且运行良好。我可以在浏览器中使用 javascript,并且连接效果很好。只是无法让 EventMachine Web-socket 客户端连接工作。

我认为这可能与证书有关,但不知道如何判断。

这是我的客户代码:

require 'eventmachine'
require 'em-websocket-client'

EM.run do
    conn = EventMachine::WebSocketClient.connect("ws://0.0.0.0:9110/message")

    conn.callback do
        data = {data: 'data'}
        conn.send_msg data.to_json
    end

    conn.errback do |e|
        puts "Got error: #{e}"
    end

    conn.stream do |msg|
        puts "<#{msg}>"
        conn.close_connection
    end

    conn.disconnect do
        puts "success"
        EM::stop_event_loop
    end
end

我没有错误?我可以从客户端破译。在服务器上(以调试模式运行)仅显示:

[[:initialize]]
[[:unbind, :connection]]

我也尝试用 wss:// 替换 ws:// 无济于事。

顺便说一句,如果我把加密排除在问题之外,一切都会很好。

还有其他人在这方面取得成功吗?

4

1 回答 1

1

事实证明,目前EventMachine::WebSocketClient不支持wss://连接。服务器可以,但那是一个单独的项目。

我最终使用了支持的 faye-websocket-rubywss://

README.md 中有关于如何使用的示例。

于 2013-04-03T18:06:57.953 回答