websocket
| Kind | ffi-zig |
|---|---|
| Categories | network web ffi |
| Keywords | websocket ws realtime rfc6455 zig-ffi |
WebSocket client and server for Kit using native Zig FFI (RFC 6455)
Files
| File | Description |
|---|---|
kit.toml | Package manifest with metadata and dependencies |
src/main.kit | Client/server API with connect, send, recv, ping/pong |
zig/kit_ffi.zig | Shared FFI types and Kit value constructors |
zig/websocket.zig | WebSocket frame encoding/decoding and handshake |
tests/websocket.test.kit | Tests for error types and close code constants |
examples/websocket.kit | Echo server client with headers, subprotocols, timeouts |
LICENSE | MIT 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.gitUsage
import Kit.WebsocketLicense
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}