@kiwa-lab/websocket
v2.1.0
Published
WebSocket server + client mock harness for kiwa — ws / uWebSockets / Socket.IO / Colyseus を統一 interface で invoke する in-process mock。 raw WebSocket frame (text / binary) + broadcast + room + heartbeat + reconnect まで real provider と同じ signature で叩ける test in
Maintainers
Readme
@kiwa-lab/websocket
Raw WebSocket server + client mock harness for kiwa — ws / uWebSockets / Socket.IO / Colyseus を統一 interface で in-process から叩ける test infra。
Installation
pnpm add -D @kiwa-lab/websocket
# or
npm install -D @kiwa-lab/websocket
# or
yarn add -D @kiwa-lab/websocketSupported providers
| Provider | Status | Protocol focus | |---|---|---| | ws | ✅ Ready | RFC6455 baseline | | uWebSockets | ✅ Ready | high-throughput | | Socket.IO | ✅ Ready | rooms + ack | | Colyseus | ✅ Ready | room state sync |
Quick start
import { describe, expect, it } from 'vitest';
import {
createWSServer,
connectClient,
sendMessage,
broadcastMessage,
} from '@kiwa-lab/websocket';
describe('chat room', () => {
it('broadcast で全 client が受信', async () => {
const server = createWSServer({ provider: 'ws' });
const alice = connectClient(server, {});
const bob = connectClient(server, {});
broadcastMessage(server, { text: 'hi all' });
expect(alice.received.length).toBe(1);
expect(bob.received.length).toBe(1);
sendMessage(server, bob.id, { text: 'private' });
expect(bob.received.length).toBe(2);
});
});API reference
createWSServer({ provider: WSProvider }): WSServer— provider 別 mock serverconnectClient(server, options: WSClientOptions): WSClient— client handle + message logsendMessage(server, clientId: string, payload: WSPayload): void— 個別送信broadcastMessage(server, payload, filter?: WSBroadcastFilter): void— 全 client 送信captureBinaryFrame(client, opcode: WSOpcode): WSBinaryFrame— binary frame 抽出encodeBinaryFrame(payload: Uint8Array, opcode: WSOpcode): WSBinaryFrame— frame encode
Test integration
vitest + /kiwa-websocket skill で real network / socket 起動なしで pub/sub + reconnection を verify。
License
UNLICENSED — see github.com/cardene777/kiwa.
