JMeter如何并发建立并保持多个带不同参数的WebSocket连接
批量建立并保持多个WebSocket连接的实现方案
下面是用JavaScript实现批量创建并维持多个WebSocket连接的具体方案,直接就能落地:
核心实现代码
// 批量创建WebSocket连接的函数 function createMultipleWsConnections(totalCount) { const connections = []; const heartbeatInterval = 30000; // 30秒发送一次心跳包 for (let i = 0; i < totalCount; i++) { const connectionId = i + 1; const wsUrl = `ws://localhost:3000/connect-ws?id=${connectionId}`; // 创建对应id的WebSocket实例 const ws = new WebSocket(wsUrl); // 连接成功后初始化心跳 ws.onopen = () => { console.log(`连接 ${connectionId} 已建立`); const heartbeatTimer = setInterval(() => { if (ws.readyState === WebSocket.OPEN) { ws.send(JSON.stringify({ type: 'heartbeat' })); } else { clearInterval(heartbeatTimer); } }, heartbeatInterval); }; // 处理服务器推送的消息 ws.onmessage = (event) => { console.log(`连接 ${connectionId} 收到消息:`, event.data); }; // 捕获连接错误 ws.onerror = (error) => { console.error(`连接 ${connectionId} 发生错误:`, error); }; // 断开后自动重连 ws.onclose = () => { console.warn(`连接 ${connectionId} 已断开,2秒后尝试重连...`); setTimeout(() => { const newWs = new WebSocket(wsUrl); // 复用原有事件处理逻辑 newWs.onopen = ws.onopen; newWs.onmessage = ws.onmessage; newWs.onerror = ws.onerror; newWs.onclose = ws.onclose; // 更新连接实例 connections[i] = newWs; }, 2000); }; connections.push(ws); } // 返回所有连接实例,方便后续统一管理 return connections; } // 调用示例:创建10个WebSocket连接 const wsConnections = createMultipleWsConnections(10);
关键细节说明
- 心跳维持:加入心跳包是为了避免服务器因长时间无交互主动断开连接,你可以根据自己的服务器超时配置调整心跳间隔。
- 自动重连:连接因网络波动或服务器重启断开时,会自动尝试重新建立连接,保证连接的持续性。
- 并发连接限制:注意大部分浏览器对同一域名的并发TCP连接数有默认限制(通常为6个),如果你的
n值远大于这个数,可能会出现连接排队或失败的情况。可以通过以下方式解决:- 配置服务器使用多个子域名分流连接(如
ws1.localhost、ws2.localhost) - 若业务允许,实现连接池机制复用空闲连接(但会改变每个连接带独立id的逻辑,需结合业务调整)
- 配置服务器使用多个子域名分流连接(如
内容的提问来源于stack exchange,提问作者Rafael
相关产品推荐
相关产品推荐

