19 lines
872 B
JavaScript
19 lines
872 B
JavaScript
'use strict';
|
|
|
|
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const WebSocket = require('ws');
|
|
const { broadcastToSockets } = require('../../src/server/app-server');
|
|
|
|
test('broadcast closes slow websocket clients without blocking healthy clients', () => {
|
|
const sent = [];
|
|
const closed = [];
|
|
const healthy = { readyState: WebSocket.OPEN, bufferedAmount: 0, send: message => sent.push(message) };
|
|
const slow = { readyState: WebSocket.OPEN, bufferedAmount: 2048, send: () => assert.fail('slow client must not receive'), close: (code, reason) => closed.push({ code, reason }) };
|
|
|
|
const outcome = broadcastToSockets(new Set([healthy, slow]), '{"status":"ok"}', { maxBufferedBytes: 1024 });
|
|
assert.deepEqual(outcome, { sent: 1, closed: 1 });
|
|
assert.deepEqual(sent, ['{"status":"ok"}']);
|
|
assert.equal(closed[0].code, 1008);
|
|
});
|