websocket不断断开连接

Posted

技术标签:

【中文标题】websocket不断断开连接【英文标题】:websocket constantly disconnecting 【发布时间】:2012-08-07 01:45:45 【问题描述】:

我一直在尝试制作一个在浏览器中运行的 websocket 聊天室。我做了一些谷歌搜索,找到了一个提供示例 websocket 连接的网站(www.websocket.org/echo.html)。但是每当我尝试他们的“连接”按钮时,它会立即显示“已断开连接”,并且我无法发送消息(这只发生在 Chrome 上)。所以我在 Firefox 上试了一下,它说“错误:未定义”然后“断开连接”。两种浏览器都支持 websocket 技术。

所以我去了另一个网站 (http://www.tutorialspoint.com/html5/html5_websocket.htm) 并复制了示例代码,将其保存为“.html”并在 chrome 中运行。它无法连接到 websocket。相反,它说“断开连接”。

问题:为什么我无法连接到 websocket/为什么它一直断开连接?我的 Chrome 版本是 21.0.1180.60。

为了进一步参考,这是我到目前为止的代码(注意:这只是应该连接并说它已经连接,而不是实际聊天):

<!doctype html>
<head>
<title>Testing</title>
</head>
<body>
<script type="text/javascript">
    function confirm() 
    if ("WebSocket" in window) 
        alert("WebSocket is supported by your Browser!");
    
    else 
        alert("Your Browser does not support WebSocket Technology. Please      update your Browser.");
    

function sendmessage() 
    try 
        var ws = new WebSocket("ws://(ip of other user/")
        
    catch(err)
        
        alert("Error with creating the WebSocket")
        

</script>
<a href="javascript:confirm()">Run Ip Connector</a>
</body>
</html> 

感谢您的帮助。

【问题讨论】:

【参考方案1】:

我刚刚在http://websocket.org/echo 上测试了 Echo 演示,它使用 Chrome 21 运行良好。您的其他示例似乎也运行良好。您可以查看here。

由于您使用的是 Chrome 21,因此您可以use the Chrome Dev Tools 查看 WebSocket 握手是否正在进行以及您是否看到任何消息。

您是否有可能坐在切断流量的路由器/防火墙后面?您可以在 websocket.org 上尝试 WSS 吗? (在位置字段中输入 wss://echo.websocket.org。)

【讨论】:

我查看了 Chrome 开发者工具控制台窗口,它似乎没有阻止它(它报告成功)。这很可能是我的防火墙。我会在我的家庭网络上再试一次。 是的,似乎是防火墙/路由器切断了流量。谢谢。

以上是关于websocket不断断开连接的主要内容,如果未能解决你的问题,请参考以下文章

WebSockets(Socket.io)与heroku自动断开连接,我应该扩展吗?

2018-03-26(websocket自动断开连接)

socket 用disconnect 断开,再重新连接怎么搞

C# socket 如何断开连接

连接后立即断开Websocket

如何在WebSocket的服务器侧检测客户端的断开连接