websocket

WebSocket client and server for Kit using native Zig FFI (RFC 6455)

Files

FileDescription
kit.tomlPackage manifest with metadata and dependencies
src/main.kitClient/server API with connect, send, recv, ping/pong
zig/kit_ffi.zigShared FFI types and Kit value constructors
zig/websocket.zigWebSocket frame encoding/decoding and handshake
tests/websocket.test.kitTests for error types and close code constants
examples/websocket.kitEcho server client with headers, subprotocols, timeouts
LICENSEMIT license file

Architecture

WebSocket Handshake

sequenceDiagram participant Client participant Server Client->>Server: HTTP Upgrade Request Server->>Client: 101 Switching Protocols Note over Client,Server: WebSocket Connection Open Client->>Server: Text/Binary Frame Server->>Client: Text/Binary Frame Client->>Server: Ping Server->>Client: Pong Client->>Server: Close Frame Server->>Client: Close Frame Note over Client,Server: Connection Closed

FFI Structure

graph TD A[Kit Code] -->|import Websocket| B[src/main.kit] B -->|extern-zig| C[zig/websocket.zig] C --> D[zig/kit_ffi.zig] D --> E[Zig std.http]

Dependencies

No Kit package dependencies.

Installation

kit add gitlab.com/kit-lang/packages/kit-websocket.git

Usage

import Kit.Websocket

License

MIT License - see LICENSE for details.

Exported Functions & Types

WebSocketError

WebSocket error type for typed error handling. Variants distinguish between different failure modes.

Variants

WebSocketConnectionError {message}
WebSocketHandshakeError {message}
WebSocketSendError {message}
WebSocketRecvError {message}
WebSocketProtocolError {message}