WebSocket
Message Ordering & Sequencing
SubscribeValidateExpert
Description
Ensure messages are processed in correct order with sequence numbers.
Test Scenario
// Test: Message ordering guarantee
let expectedSeq = 0;
const buffer: Map<number, any> = new Map();
ws.onmessage = (e) => {
const msg = JSON.parse(e.data);
if (msg.seq === expectedSeq) {
processMessage(msg);
expectedSeq++;
// Process buffered messages
while (buffer.has(expectedSeq)) {
processMessage(buffer.get(expectedSeq)!);
buffer.delete(expectedSeq);
expectedSeq++;
}
} else if (msg.seq > expectedSeq) {
buffer.set(msg.seq, msg); // Buffer future message
}
// Ignore duplicate (seq < expected)
};Testing Tips
- •Add sequence numbers to messages
- •Buffer out-of-order messages
- •Request retransmission for gaps
// Playwright API Testing - WebSocketimport { test, expect } from '@playwright/test';test('WebSocket connection', async ({ page }) => {// Listen for WebSocket connectionsconst wsPromise = page.waitForEvent('websocket');await page.goto('/websocket-demo');const ws = await wsPromise;expect(ws.url()).toContain('ws://');// Wait for messageconst framePromise = ws.waitForEvent('framereceived');const frame = await framePromise;expect(frame.payload).toBeDefined();});
Challenge ID: ws-message-ordering
2 frameworks available