kopia lustrzana https://github.com/cirospaciari/socketify.py
52 wiersze
1.3 KiB
JavaScript
52 wiersze
1.3 KiB
JavaScript
// See ./README.md for instructions on how to run this benchmark.
|
|
const port = process.env.PORT || 4001;
|
|
const CLIENTS_TO_WAIT_FOR = parseInt(process.env.CLIENTS_COUNT || "", 10) || 16;
|
|
|
|
import { createRequire } from "module";
|
|
const require = createRequire(import.meta.url);
|
|
var WebSocketServer = require("ws").Server,
|
|
config = {
|
|
host: "0.0.0.0",
|
|
port,
|
|
},
|
|
wss = new WebSocketServer(config, function () {
|
|
console.log(`Waiting for ${CLIENTS_TO_WAIT_FOR} clients to connect..`);
|
|
});
|
|
|
|
var clients = [];
|
|
|
|
wss.on("connection", function (ws, { url }) {
|
|
const name = new URL(new URL(url, "http://localhost:3000")).searchParams.get(
|
|
"name"
|
|
);
|
|
console.log(
|
|
`${name} connected (${CLIENTS_TO_WAIT_FOR - clients.length} remain)`
|
|
);
|
|
clients.push(ws);
|
|
|
|
ws.on("message", function (message) {
|
|
for (let client of clients) {
|
|
client.send(message);
|
|
}
|
|
});
|
|
|
|
// when a connection is closed
|
|
ws.on("close", function (ws) {
|
|
clients.splice(clients.indexOf(ws), 1);
|
|
});
|
|
|
|
if (clients.length === CLIENTS_TO_WAIT_FOR) {
|
|
sendReadyMessage();
|
|
}
|
|
});
|
|
|
|
function sendReadyMessage() {
|
|
console.log("All clients connected");
|
|
setTimeout(() => {
|
|
console.log("Starting benchmark");
|
|
for (let client of clients) {
|
|
client.send(`ready`);
|
|
}
|
|
}, 100);
|
|
}
|