如何手动模拟 websocket 断开连接? (Firefox 或 Chrome 开发工具)

Posted

技术标签:

【中文标题】如何手动模拟 websocket 断开连接? (Firefox 或 Chrome 开发工具)【英文标题】:How do I simulate a websocket disconnect manually? (Firefox or Chrome dev tools) 【发布时间】:2018-10-27 21:08:57 【问题描述】:

如何手动模拟 websocket 断开连接?我正在尝试测试 websocket 重新连接逻辑,除了等待浏览器的 10 分钟 websocket 超时之外,我没有其他办法。

【问题讨论】:

【参考方案1】:

使用 SockJS 和 Stomp:

socket = new SockJS(socketUrl);
stompClient = Stomp.over(socket); // global variable stompClient

关闭底层套接字:

socket.close();

触发 stompClient 的错误处理程序,就好像连接被中断了一样。

【讨论】:

【参考方案2】:

我在这里找到了测试的解决方案:https://***.com/a/59916046/2929675

在打开 WebSocket 连接之前,您必须执行此脚本来猴子修补浏览器的 WebSocket 功能:

const sockets = [];
const nativeWebSocket = window.WebSocket;
window.WebSocket = function(...args)
  const socket = new nativeWebSocket(...args);
  sockets.push(socket);
  return socket;
;

现在您可以通过 sockets 数组访问所有 WebSocket 连接。 而当你想触发重连时,你可以调用

sockets[0].close();

使用要关闭的连接的索引。

这有点hacky,但这是我迄今为止找到的最佳解决方案。

看起来铬问题也有一些进展,以在开发工具中支持这一点:https://bugs.chromium.org/p/chromium/issues/detail?id=423246

【讨论】:

以上是关于如何手动模拟 websocket 断开连接? (Firefox 或 Chrome 开发工具)的主要内容,如果未能解决你的问题,请参考以下文章

Android WebSocket - 断开连接检测奇怪的行为

WebSocket断开连接时如何重新连接?

C# socket 如何断开连接

小程序webSocket使用心得

如何使用 OkHttpClient 真正断开与 WebSocket 的连接?

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