我如何调试websocket服务器

时间:2010-07-02 18:24:27

标签: websocket

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

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

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

浏览器以

响应

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

我的服务器正在获得有效的客户端握手请求,它会发回响应然后繁荣。

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

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

  1. 有没有办法让雷区告诉我为什么它会拒绝我的握手?

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

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

    感谢您的帮助。

3 个答案:

答案 0 :(得分:2)

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

处的jWebSocket演示服务器

希望这会有所帮助

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

这是我用http://www.websocket.org echo websocket服务器制作的jsfiddle,它可以在Chrome中运行但不适用于Firefox 6:http://jsfiddle.net/awDLc/

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