【问题标题】:JavaScript websocket errorJavaScript websocket 错误
【发布时间】:2014-11-04 05:58:12
【问题描述】:

有时,当我重新加载页面时,会出现错误:
WebSocket connection to 'ws://127.0.0.1:45/' failed: Connection closed before receiving a handshake response
我正在为 C# 使用 Alchemy Websocket 库。 而且我只能修复删除 cookie 和本地存储。我该如何解决?

【问题讨论】:

  • 当 onUnload 事件发生时,您的页面是否有关闭与 websocket 连接的代码?您的错误看起来 websocket 服务器尚未准备好连接。
  • 其实不是,那是websocket事件吗?
  • 'onUnload' 事件是在网页关闭或重新加载时引发的客户端事件。 websocket 的用法是“连接到 websocket 服务器”、“从 websocket 接收数据”和“关闭连接”。如果你 reload ,使用顺序可能没有完成,websocket 服务器可能会留在进程中。
  • 你能给我一个“onUnload”关闭websocket的例子吗?

标签: javascript sockets websocket handshake alchemy


【解决方案1】:

好的,将您的套接字定义为“全局变量”,大概在文档的顶部。现在这个套接字变量在整个文档中都可用。当用户单击选项卡/浏览器窗口上的 x (或重新加载页面)时,您希望 window.onunload 事件触发,因此在某处定义该事件 - 并调用全局套接字变量的 close 方法。

    var _socket = new WebSocket("ws://127.0.0.1/example");

    window.onunload = function () {

        _socket.close();
    }

【讨论】:

  • 嗯...那么我相信错误一定在其他地方。也许 Alchemy Websocket 做了一些 websocket 客户端没有预料到的事情。说到 websockets 和 .net,我发现唯一真正稳定的库是 SignalR——它简直太棒了。
  • 只是好奇,这个错误是不是只有刷新页面才会出现?还有一件事,您可能想尝试用“window.onbeforeunload”替换“window.onunload”。我对提到的最后一个不太熟悉,但可能值得一试(因为此时页面的整个上下文都没有受到影响)。
  • 是的,如果我刷新页面或关闭(然后返回)错误就会发生。我尝试了它们,没有一个对我有用。会试试 SignalR。
  • 酷,这可能会让你继续前进:stackoverflow.com/questions/21512587/…
  • 你让 SignalR 启动并运行了吗?
猜你喜欢
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多