@kyneta/websocket-transport 1.3.1 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.d.ts +31 -30
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +2 -15
- package/dist/bun.d.ts +18 -18
- package/dist/bun.d.ts.map +1 -0
- package/dist/bun.js +95 -43
- package/dist/bun.js.map +1 -1
- package/dist/client-transport-CKjXedwS.d.ts +134 -0
- package/dist/client-transport-CKjXedwS.d.ts.map +1 -0
- package/dist/client-transport-DIZ-LJxs.js +510 -0
- package/dist/client-transport-DIZ-LJxs.js.map +1 -0
- package/dist/server.d.ts +120 -118
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +296 -303
- package/dist/server.js.map +1 -1
- package/dist/{types-D0lbeevu.d.ts → types-CJAcr1Df.d.ts} +71 -69
- package/dist/types-CJAcr1Df.d.ts.map +1 -0
- package/package.json +11 -11
- package/src/__tests__/client-transport.test.ts +3 -4
- package/src/browser.ts +3 -3
- package/src/client-transport.ts +5 -6
- package/src/connection.ts +1 -1
- package/src/server-transport.ts +7 -7
- package/src/server.ts +5 -1
- package/src/service-client.ts +2 -2
- package/src/types.ts +1 -1
- package/dist/browser.js.map +0 -1
- package/dist/chunk-YZQF5RLV.js +0 -614
- package/dist/chunk-YZQF5RLV.js.map +0 -1
- package/dist/client-transport-DUAFjVbh.d.ts +0 -132
package/dist/server.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
import { a as WebsocketClientOptions } from './client-transport-DUAFjVbh.js';
|
|
5
|
-
import '@kyneta/machine';
|
|
1
|
+
import { _ as wrapStandardWebsocket, a as SocketReadyState, c as WebSocketConstructor, g as wrapNodeWebsocket, h as WebsocketConnectionResult, i as Socket, l as WebSocketLike, m as WebsocketConnectionOptions, n as NodeWebsocketLike, p as WebsocketConnectionHandle, r as READY_STATE, s as WebSocketCloseEvent, t as DisconnectReason, u as WebSocketMessageEvent } from "./types-CJAcr1Df.js";
|
|
2
|
+
import { r as WebsocketClientOptions } from "./client-transport-CKjXedwS.js";
|
|
3
|
+
import { Channel, ChannelMsg, GeneratedChannel, PeerId, Transport, TransportFactory } from "@kyneta/transport";
|
|
6
4
|
|
|
5
|
+
//#region src/connection.d.ts
|
|
7
6
|
/**
|
|
8
7
|
* Default fragment threshold in bytes.
|
|
9
8
|
* Messages larger than this are fragmented for cloud infrastructure compatibility.
|
|
@@ -14,12 +13,12 @@ declare const DEFAULT_FRAGMENT_THRESHOLD: number;
|
|
|
14
13
|
* Configuration for creating a WebsocketConnection.
|
|
15
14
|
*/
|
|
16
15
|
interface WebsocketConnectionConfig {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Fragment threshold in bytes. Messages larger than this are fragmented.
|
|
18
|
+
* Set to 0 to disable fragmentation (not recommended for cloud deployments).
|
|
19
|
+
* Default: 100KB (safe for AWS API Gateway's 128KB limit)
|
|
20
|
+
*/
|
|
21
|
+
fragmentThreshold?: number;
|
|
23
22
|
}
|
|
24
23
|
/**
|
|
25
24
|
* Represents a single Websocket connection to a peer (server-side).
|
|
@@ -31,53 +30,54 @@ interface WebsocketConnectionConfig {
|
|
|
31
30
|
* the natural choice for Websocket's binary frame support.
|
|
32
31
|
*/
|
|
33
32
|
declare class WebsocketConnection {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
33
|
+
#private;
|
|
34
|
+
readonly peerId: PeerId;
|
|
35
|
+
readonly channelId: number;
|
|
36
|
+
constructor(peerId: PeerId, channelId: number, socket: Socket, config?: WebsocketConnectionConfig);
|
|
37
|
+
/**
|
|
38
|
+
* Set the channel reference.
|
|
39
|
+
* Called by the adapter when the channel is created.
|
|
40
|
+
* @internal
|
|
41
|
+
*/
|
|
42
|
+
_setChannel(channel: Channel): void;
|
|
43
|
+
/**
|
|
44
|
+
* Start processing messages on this connection.
|
|
45
|
+
*
|
|
46
|
+
* Sets up the message handler on the socket. Must be called after
|
|
47
|
+
* the connection is fully set up (channel assigned, stored in adapter).
|
|
48
|
+
*/
|
|
49
|
+
start(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Send a ChannelMsg through the Websocket.
|
|
52
|
+
*
|
|
53
|
+
* Encodes via CBOR codec → frame → fragment if needed → socket.send().
|
|
54
|
+
*/
|
|
55
|
+
send(msg: ChannelMsg): void;
|
|
56
|
+
/**
|
|
57
|
+
* Send a "ready" signal to the client.
|
|
58
|
+
*
|
|
59
|
+
* This is a transport-level text message that tells the client the
|
|
60
|
+
* server is ready to receive protocol messages. The client creates
|
|
61
|
+
* its channel and sends establish after receiving this.
|
|
62
|
+
*/
|
|
63
|
+
sendReady(): void;
|
|
64
|
+
/**
|
|
65
|
+
* Close the connection and clean up resources.
|
|
66
|
+
*/
|
|
67
|
+
close(code?: number, reason?: string): void;
|
|
69
68
|
}
|
|
70
|
-
|
|
69
|
+
//#endregion
|
|
70
|
+
//#region src/server-transport.d.ts
|
|
71
71
|
/**
|
|
72
72
|
* Options for the Websocket server adapter.
|
|
73
73
|
*/
|
|
74
74
|
interface WebsocketServerTransportOptions {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
75
|
+
/**
|
|
76
|
+
* Fragment threshold in bytes. Messages larger than this are fragmented.
|
|
77
|
+
* Set to 0 to disable fragmentation (not recommended for cloud deployments).
|
|
78
|
+
* Default: 100KB (safe for AWS API Gateway's 128KB limit)
|
|
79
|
+
*/
|
|
80
|
+
fragmentThreshold?: number;
|
|
81
81
|
}
|
|
82
82
|
/**
|
|
83
83
|
* Websocket server network adapter.
|
|
@@ -92,74 +92,75 @@ interface WebsocketServerTransportOptions {
|
|
|
92
92
|
*
|
|
93
93
|
* The connection handshake follows a two-phase protocol:
|
|
94
94
|
* 1. Server sends text `"ready"` signal (transport-level)
|
|
95
|
-
* 2. Client sends `establish
|
|
96
|
-
* 3. Server
|
|
95
|
+
* 2. Client sends `establish` (protocol-level)
|
|
96
|
+
* 3. Server upgrades channel and sends present (handled by Synchronizer)
|
|
97
97
|
*
|
|
98
98
|
* The server does NOT call `establishChannel()` — it waits for the
|
|
99
|
-
* client's establish
|
|
100
|
-
* establish
|
|
99
|
+
* client's establish to avoid a race condition where the binary
|
|
100
|
+
* establish could arrive before the client has processed "ready".
|
|
101
101
|
*/
|
|
102
102
|
declare class WebsocketServerTransport extends Transport<PeerId> {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
103
|
+
#private;
|
|
104
|
+
constructor(options?: WebsocketServerTransportOptions);
|
|
105
|
+
protected generate(peerId: PeerId): GeneratedChannel;
|
|
106
|
+
onStart(): Promise<void>;
|
|
107
|
+
onStop(): Promise<void>;
|
|
108
|
+
/**
|
|
109
|
+
* Handle a new Websocket connection.
|
|
110
|
+
*
|
|
111
|
+
* Call this from your framework's Websocket upgrade handler.
|
|
112
|
+
* Returns a connection handle and a `start()` function that begins
|
|
113
|
+
* message processing and sends the "ready" signal.
|
|
114
|
+
*
|
|
115
|
+
* @param options - Connection options including the Socket and optional peer ID
|
|
116
|
+
* @returns A connection handle and start function
|
|
117
|
+
*
|
|
118
|
+
* @example Bun
|
|
119
|
+
* ```typescript
|
|
120
|
+
* const { start } = serverAdapter.handleConnection({
|
|
121
|
+
* socket: wrapBunWebsocket(ws),
|
|
122
|
+
* })
|
|
123
|
+
* start()
|
|
124
|
+
* ```
|
|
125
|
+
*
|
|
126
|
+
* @example Node.js ws
|
|
127
|
+
* ```typescript
|
|
128
|
+
* wss.on("connection", (ws) => {
|
|
129
|
+
* const { start } = serverAdapter.handleConnection({
|
|
130
|
+
* socket: wrapNodeWebsocket(ws),
|
|
131
|
+
* })
|
|
132
|
+
* start()
|
|
133
|
+
* })
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
handleConnection(options: WebsocketConnectionOptions): WebsocketConnectionResult;
|
|
137
|
+
/**
|
|
138
|
+
* Get an active connection by peer ID.
|
|
139
|
+
*/
|
|
140
|
+
getConnection(peerId: PeerId): WebsocketConnection | undefined;
|
|
141
|
+
/**
|
|
142
|
+
* Get all active connections.
|
|
143
|
+
*/
|
|
144
|
+
getAllConnections(): WebsocketConnection[];
|
|
145
|
+
/**
|
|
146
|
+
* Check if a peer is connected.
|
|
147
|
+
*/
|
|
148
|
+
isConnected(peerId: PeerId): boolean;
|
|
149
|
+
/**
|
|
150
|
+
* Unregister a connection, removing its channel and cleaning up state.
|
|
151
|
+
*/
|
|
152
|
+
unregisterConnection(peerId: PeerId): void;
|
|
153
|
+
/**
|
|
154
|
+
* Broadcast a message to all connected peers.
|
|
155
|
+
*/
|
|
156
|
+
broadcast(msg: ChannelMsg): void;
|
|
157
|
+
/**
|
|
158
|
+
* Get the number of connected peers.
|
|
159
|
+
*/
|
|
160
|
+
get connectionCount(): number;
|
|
161
161
|
}
|
|
162
|
-
|
|
162
|
+
//#endregion
|
|
163
|
+
//#region src/service-client.d.ts
|
|
163
164
|
/**
|
|
164
165
|
* Options for service-to-service Websocket connections.
|
|
165
166
|
*
|
|
@@ -194,5 +195,6 @@ type ServiceWebsocketClientOptions = WebsocketClientOptions;
|
|
|
194
195
|
* ```
|
|
195
196
|
*/
|
|
196
197
|
declare function createServiceWebsocketClient(options: ServiceWebsocketClientOptions): TransportFactory;
|
|
197
|
-
|
|
198
|
-
export { DEFAULT_FRAGMENT_THRESHOLD, type ServiceWebsocketClientOptions, Socket, WebsocketConnection, type WebsocketConnectionConfig, WebsocketConnectionOptions, WebsocketConnectionResult, WebsocketServerTransport, type WebsocketServerTransportOptions, createServiceWebsocketClient };
|
|
198
|
+
//#endregion
|
|
199
|
+
export { DEFAULT_FRAGMENT_THRESHOLD, type DisconnectReason, type NodeWebsocketLike, READY_STATE, type ServiceWebsocketClientOptions, type Socket, type SocketReadyState, type WebSocketCloseEvent, type WebSocketConstructor, type WebSocketLike, type WebSocketMessageEvent, WebsocketConnection, type WebsocketConnectionConfig, type WebsocketConnectionHandle, type WebsocketConnectionOptions, type WebsocketConnectionResult, WebsocketServerTransport, type WebsocketServerTransportOptions, createServiceWebsocketClient, wrapNodeWebsocket, wrapStandardWebsocket };
|
|
200
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","names":[],"sources":["../src/connection.ts","../src/server-transport.ts","../src/service-client.ts"],"mappings":";;;;;;;;AAyBA;;cAAa,0BAAA;;;AAKb;UAAiB,yBAAA;;;;AAkBjB;;EAZE,iBAAA;AAAA;;;;;;;;;;cAYW,mBAAA;EAAA;WACF,MAAA,EAAQ,MAAA;EAAA,SACR,SAAA;cAWP,MAAA,EAAQ,MAAA,EACR,SAAA,UACA,MAAA,EAAQ,MAAA,EACR,MAAA,GAAS,yBAAA;EAFT;;;;;EA4BF,WAAA,CAAY,OAAA,EAAS,OAAA;EAAA;;;;;;EAcrB,KAAA,CAAA;EA2CA;;;;;EA3BA,IAAA,CAAK,GAAA,EAAK,UAAA;;;ACxEZ;;;;;EDyFE,SAAA,CAAA;ECxCoC;;;EDkDpC,KAAA,CAAM,IAAA,WAAe,MAAA;AAAA;;;;AA1HvB;;UCuBiB,+BAAA;EDvBmC;;AAKpD;;;ECwBE,iBAAA;AAAA;ADNF;;;;;;;;;;;;;;;;;;;;AAAA,cCiDa,wBAAA,SAAiC,SAAA,CAAU,MAAA;EAAA;cAI1C,OAAA,GAAU,+BAAA;EAAA,UAUZ,QAAA,CAAS,MAAA,EAAQ,MAAA,GAAS,gBAAA;EAe9B,OAAA,CAAA,GAAW,OAAA;EAIX,MAAA,CAAA,GAAU,OAAA;ED1BhB;;;;;;;;;;;;;ACxDF;;;;;AAiDA;;;;;;;;;;EAyEE,gBAAA,CACE,OAAA,EAAS,0BAAA,GACR,yBAAA;EA+DmB;;;EAAtB,aAAA,CAAc,MAAA,EAAQ,MAAA,GAAS,mBAAA;EAqBF;;;EAd7B,iBAAA,CAAA,GAAqB,mBAAA;EAjJgC;;;EAwJrD,WAAA,CAAY,MAAA,EAAQ,MAAA;;;;EAOpB,oBAAA,CAAqB,MAAA,EAAQ,MAAA;EAjJF;;;EA4J3B,SAAA,CAAU,GAAA,EAAK,UAAA;EA7IE;;;EAAA,IAsJb,eAAA,CAAA;AAAA;;;;;;AD3PN;;;;;KEJY,6BAAA,GAAgC,sBAAA;;;;;AF2B5C;;;;;;;;;;;;;;;;;;;;iBEDgB,4BAAA,CACd,OAAA,EAAS,6BAAA,GACR,gBAAA"}
|