Files
wordcloud-board/server/realtime-server.test.mjs
T
broccoli 02f5bf14ba
Build, Push and Deploy / build (push) Failing after 1s
Build, Push and Deploy / deploy (push) Skipped
Configure board deployment and backend proxy
2026-09-13 16:09:59 +08:00

46 lines
1.2 KiB
JavaScript

import test from 'node:test';
import assert from 'node:assert/strict';
import { createRealtimeServer } from './realtime-server.mjs';
import WebSocket from 'ws';
test('broadcasts focus events to other connected clients', async () => {
const server = createRealtimeServer(0);
await new Promise((resolve) => server.listen(resolve));
const { port } = server.address();
try {
const screen = new WebSocket(`ws://127.0.0.1:${port}`);
const controller = new WebSocket(`ws://127.0.0.1:${port}`);
await Promise.all([
new Promise((resolve) => screen.once('open', resolve)),
new Promise((resolve) => controller.once('open', resolve)),
]);
const received = new Promise((resolve) => {
screen.once('message', (data) => resolve(JSON.parse(data)));
});
controller.send(JSON.stringify({
type: 'FOCUS_NAME',
cloudId: 'demo',
name: 'Sophia',
messageId: 'focus-1',
sentAt: 1,
}));
assert.deepEqual(await received, {
type: 'FOCUS_NAME',
cloudId: 'demo',
name: 'Sophia',
messageId: 'focus-1',
sentAt: 1,
});
screen.close();
controller.close();
} finally {
await new Promise((resolve) => server.close(resolve));
}
});