【问题标题】:How do I debug a websocket server如何调试 websocket 服务器
【发布时间】:2013-05-20 20:34:59
【问题描述】:

我正在尝试为 webSocket 连接编写服务器。我已经仔细阅读了规范(76,而不是 75)。我正在使用雷区作为浏览器。

当我尝试在浏览器中从 javascript 创建 WebSocket 时:

var ws = new WebSocket("ws://localhost:8766/hoho");

浏览器响应

“Firefox 无法与位于 ws://localhost:8766/hoho 的服务器建立连接。”

我的服务器收到一个有效的客户端握手请求,它发回响应,然后繁荣。

我已经运行了我可以通过我的服务器找到的每个握手示例,并且我在每个实例中都完全匹配给定的响应。我非常有信心返回字节流是正确的。我不需要帮助调试我的代码,它正在按照我的意思做。我需要帮助调试我对握手协议的使用,因为当我给雷区我认为正确的响应时,它会嘲笑我。

我的问题是:我该如何调试这个东西?我能想到两种可能。

  1. 有什么方法可以让雷区告诉我为什么它拒绝我的握手?

  2. 网络上是否有工作的公共 webSocket 服务器服务?如果有,我可以代理它,观察两个方向的字节流,找出我的不同之处。

有没有人对这些方向有任何想法或任何其他想法?

感谢您的帮助。

【问题讨论】:

  • Gimite's Ruby websocket backend 现在似乎支持 76 草案。可以试试吗?
  • 我也得到了带有“ws://”的Firefox can't establish a connection to the server at ... 和带有“http://”的An invalid or illegal string was specified" code: "12。 Chrome 对此给出了一个更好的错误(假设它是同一个问题)Wrong url scheme for WebSocket 用于“http://”,但随后是一个荒谬的错误:Unexpected response code: 200 用于“ws://”。服务器正在生成并发送结果。
  • 我意识到 Unexpected response code: 200 实际上对于 Google Chrome 是正确的,它应该是 101。而我缺少的标题... (tbray.org/drafts/wsock-00#anchor18)

标签: websocket


【解决方案1】:

我正在调试类似的情况,我最依赖的工具是netcat,还有一些openssl的额外使用。关闭你的 websocket 服务器并运行nc -l 8766。这使您可以准确记录正在发送的标头。重新打开 websocket 服务器并使用nc 8766 粘贴相同的标题并查看结果。 openssl s_client -connect localhost:443 将允许您使用 ssl 提出请求,如果您的组合中有此要求。

从那里,确保响应完全符合 websocket 握手协议。比如我现在的问题是我的回复有Connection: close,这不好。

【讨论】:

    【解决方案2】:

    关于第二种可能性。 是的,那里有一个 websocket 服务器。 jWebSocket 演示服务器http://jwebsocket.org/demos/chat/chat.htm

    希望对你有帮助

    添加:Echo 套接字服务器位于:http://www.websocket.org/echo.html

    【讨论】:

      【解决方案3】:

      这是我从 http://www.websocket.org echo websocket 服务器制作的 jsfiddle,它在 Chrome 中工作,但在 Firefox 6 中不工作:http://jsfiddle.net/awDLc/

      调整为使用 MozWebSocket 而不是 WebSocket,但这可能还不够?

      【讨论】:

        猜你喜欢
        • 2014-02-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-26
        • 1970-01-01
        • 2012-01-18
        • 2023-03-17
        • 2014-06-20
        相关资源
        最近更新 更多