0

new Websocket(socketUrl)如果服务器拒绝打开 websocket,Javascript可能会永远运行,并且根据设计,周围的脚本不会获得有关服务器拒绝打开它的原因的信息。我已经看到客户端浏览器每隔几秒钟发送一次 websocket 请求超过 10 周(我想一个选项卡一直处于打开状态并且一直未使用)。

我已经在周围的客户端脚本中实现了一个更改,该脚本检测(通过正常的 http 请求)websocket 请求何时变得无用,然后关闭套接字。从这一点开始,重新加载其 javascript 文件的客户端将不再引起问题。

但是,我想知道是否有一种方法可以肯定地处理那些从不重新加载的客户端中被遗忘的选项卡,或者我唯一能做的就是通过阻止负载均衡器中的多余请求(haproxy )。

4

1 回答 1

0

假设您的 websocket 对象被命名为websocket_obj. 喜欢:

websocket_obj = new Websocket(url); // url You know it

然后,当您收到错误时,您可以关闭套接字。所以,

websocket_obj.onerror = function(){
    Websocket.close();
}

这是mdn_refs

于 2020-06-04T13:24:39.583 回答