node.js - 开玩笑 - 多个 websocket 连接挂起开玩笑
问题描述
我正在使用这个函数,它通过 numberOfBots 参数根据需要创建尽可能多的 websocket 连接,以测试是否所有客户端都收到了我需要的消息。
function checkGameStart(numberOfBots) {
return new Promise((resolve, reject) => {
let clients = [];
let connection = [];
for (let i = 0; i < numberOfBots; i++) {
clients.push(new WebSocket('ws://127.0.0.1:8080'));
connection.push(false);
clients[i].onmessage = (msg) => {
let data = JSON.parse(msg.data);
if (data.title === "gameStarted") {
connection[i] = true;
checkAllClientsReady();
}
}
clients[i].onerror = (err) => reject(err);
}
function checkAllClientsReady() {
if (!(connection.includes(false))) {
resolve(true);
closeAllConnections();
}
}
function closeAllConnections() {
for (let i = 0; i < clients; i++) {
clients[i].close()
}
}
});
}
在浏览器中,它可以 100% 运行。浏览器控制台打开 4 个连接并在解决承诺之前等待消息。然而,Jest 似乎超过了 15 秒,这很奇怪,我很好奇为什么。
解决方案
推荐阅读
- svg - 在 Seed Rust 应用程序中为 SVG 文本元素调用 getBBox
- python - 在 python 中提取项目进行演示 - 我有一个从 Outlook 中获取的列表,但需要将这些项目分解为单独的字符串
- qt - 无法让 Qt Creator 调试在 Windows 10 上运行
- python - 基本的While循环迭代顺序?
- javascript - 如何使用 setAttribute 方法和 Selenium 和 Python 更改 Datepicker 的隐藏元素的日期?
- google-apps-script - 简单的 Google 表格脚本现在速度慢且不可靠
- python - 直接打开二进制文件到 Tkinter GUI
- python - 如何在另一个类中初始化一个类的实例(对不起,我是新人)
- python - 有人可以帮助我解决初始条件下的第二个微分吗?(简单振荡器)
- owl - Protege 中“等效于”和数据属性的问题