Jest - Multiple websocket connection hangs jest

Viewed 34

I'm using this function which creates as many websocket connections as needed via the numberOfBots argument to test if all the clients receive the message I need.

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()
            }
        }
    });
}

In the browser, it works 100%. The browser console opens 4 connections and waits for the messages before resolving the promise. However, Jest seems to hang past 15secs which is quite odd and I'm curious as to why.

0 Answers
Related