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

15

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

2个回答

1
使用SockJS和Stomp:
socket = new SockJS(socketUrl);
stompClient = Stomp.over(socket); // global variable stompClient

关闭底层套接字:
socket.close();

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

0

我找到了一个测试解决方案,链接在这里:https://dev59.com/B7joa4cB1Zd3GeqPGN8b#59916046

在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,但这是我目前找到的最好的解决方案。

看起来在开发工具中支持此功能的Chromium问题也取得了一些进展:https://bugs.chromium.org/p/chromium/issues/detail?id=423246


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接