|
| 1 | +// Reference: https://bun.sh/docs/api/websockets |
| 2 | + |
| 3 | +export interface BunWSOptions { |
| 4 | + message: ( |
| 5 | + ws: BunServerWebSocket, |
| 6 | + message: string | ArrayBuffer | Uint8Array, |
| 7 | + ) => void; |
| 8 | + open?: (ws: BunServerWebSocket) => void; |
| 9 | + close?: (ws: BunServerWebSocket) => void; |
| 10 | + error?: (ws: BunServerWebSocket, error: Error) => void; |
| 11 | + drain?: (ws: BunServerWebSocket) => void; |
| 12 | + perMessageDeflate?: |
| 13 | + | boolean |
| 14 | + | { |
| 15 | + compress?: boolean | BunWSCompressor; |
| 16 | + decompress?: boolean | BunWSCompressor; |
| 17 | + }; |
| 18 | +} |
| 19 | + |
| 20 | +type BunWSCompressor = |
| 21 | + | `"disable"` |
| 22 | + | `"shared"` |
| 23 | + | `"dedicated"` |
| 24 | + | `"3KB"` |
| 25 | + | `"4KB"` |
| 26 | + | `"8KB"` |
| 27 | + | `"16KB"` |
| 28 | + | `"32KB"` |
| 29 | + | `"64KB"` |
| 30 | + | `"128KB"` |
| 31 | + | `"256KB"`; |
| 32 | + |
| 33 | +export interface BunWSServer { |
| 34 | + pendingWebsockets: number; |
| 35 | + publish( |
| 36 | + topic: string, |
| 37 | + data: string | ArrayBufferView | ArrayBuffer, |
| 38 | + compress?: boolean, |
| 39 | + ): number; |
| 40 | + upgrade( |
| 41 | + req: Request, |
| 42 | + options?: { |
| 43 | + headers?: HeadersInit; |
| 44 | + data?: any; |
| 45 | + }, |
| 46 | + ): boolean; |
| 47 | +} |
| 48 | + |
| 49 | +export interface BunServerWebSocket { |
| 50 | + readonly data: any; |
| 51 | + readonly readyState: number; |
| 52 | + readonly remoteAddress: string; |
| 53 | + send(message: string | ArrayBuffer | Uint8Array, compress?: boolean): number; |
| 54 | + close(code?: number, reason?: string): void; |
| 55 | + subscribe(topic: string): void; |
| 56 | + unsubscribe(topic: string): void; |
| 57 | + publish(topic: string, message: string | ArrayBuffer | Uint8Array): void; |
| 58 | + isSubscribed(topic: string): boolean; |
| 59 | + cork(cb: (ws: BunServerWebSocket) => void): void; |
| 60 | +} |
0 commit comments