我正在尝试为webSocket连接编写服务器。我仔细阅读了规范(76,而不是75)。我正在使用雷区作为浏览器。
当我尝试在浏览器中使用javascript创建WebSocket时:
var ws = new WebSocket("ws://localhost:8766/hoho");
浏览器以
响应“Firefox无法在ws:// localhost:8766 / hoho建立与服务器的连接。”
我的服务器正在获得有效的客户端握手请求,它会发回响应然后繁荣。
我运行了每个示例握手示例,我可以通过我的服务器找到它,并且我在每个实例中都精确匹配给定的响应。我非常有信心返回字节流是正确的。我不需要帮助调试我的代码,它正在做我的意思。我需要帮助调试我对握手协议的使用,因为当我向minefield提供我认为正确的响应时,它会嘲笑我。
我的问题是:我该如何调试这个东西?我可以想到两种可能性。
有没有办法让雷区告诉我为什么它会拒绝我的握手?
网络上是否有可用的公共WebSocket服务器服务?如果有,我可以代理它,在两个方向上观察字节流并找出我的不同之处。
有没有人对这些方向或任何其他想法有任何想法?
感谢您的帮助。
答案 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,但这可能还不够?