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

时间:2018-05-17 14:34:41

标签: websocket google-chrome-devtools firebug firefox-developer-tools

如何手动模拟websocket断开连接?我正在尝试测试websocket重新连接逻辑,除了等待浏览器的10分钟websocket超时之外,我无法做到这一点。

2 个答案:

答案 0 :(得分:0)

使用SockJS和Stomp:

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

使用以下命令关闭基础套接字:

socket.close();

触发stompClient的错误处理程序,就好像连接已中断。

答案 1 :(得分:0)

我在这里找到了一个测试解决方案:https://stackoverflow.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();

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

这有点老套,但它是我目前找到的最好的解决方案。

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