Files
chimera-Public/test/server/websocket-backpressure.test.js

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