@asteby/metacore-websocket 0.3.0 → 0.5.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/channels.d.ts +45 -0
- package/dist/channels.d.ts.map +1 -0
- package/dist/channels.js +192 -0
- package/dist/channels.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/native.d.ts +2 -0
- package/dist/native.d.ts.map +1 -0
- package/dist/native.js +2 -0
- package/dist/native.js.map +1 -0
- package/dist/provider.d.ts +1 -1
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js.map +1 -1
- package/dist/use-websocket.d.ts +22 -0
- package/dist/use-websocket.d.ts.map +1 -0
- package/dist/use-websocket.js +80 -0
- package/dist/use-websocket.js.map +1 -0
- package/package.json +6 -2
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-channel WebSocket client.
|
|
3
|
+
*
|
|
4
|
+
* Complements the single-socket `WebSocketProvider`: some backends (hubs
|
|
5
|
+
* that route by logical channel — notifications, chat, live TV) expect ONE
|
|
6
|
+
* connection PER channel, addressed by query params:
|
|
7
|
+
*
|
|
8
|
+
* wss://api.example.com/ws?channel=chat&token=<jwt>&with=42
|
|
9
|
+
*
|
|
10
|
+
* This client manages that pool imperatively and framework-agnostically:
|
|
11
|
+
* auto-reconnect with exponential backoff, React StrictMode-safe
|
|
12
|
+
* subscription (100ms close debounce so double-mount doesn't drop the
|
|
13
|
+
* socket), and lazy connection per channel.
|
|
14
|
+
*
|
|
15
|
+
* Origin: battle-tested client contributed upstream from doctores.lat.
|
|
16
|
+
*/
|
|
17
|
+
/** Handler for incoming messages on a channel. */
|
|
18
|
+
export type ChannelMessageHandler = (event: MessageEvent) => void;
|
|
19
|
+
export interface ChannelClientOptions {
|
|
20
|
+
/** WS base URL, e.g. `wss://api.example.com/ws`. */
|
|
21
|
+
baseUrl: string;
|
|
22
|
+
/** Returns the current JWT; `null` suppresses the connection. */
|
|
23
|
+
getToken: () => string | null;
|
|
24
|
+
/** Max reconnection attempts per channel (default: 5). */
|
|
25
|
+
maxReconnectAttempts?: number;
|
|
26
|
+
/** Base reconnect delay in ms, doubled per attempt (default: 1000). */
|
|
27
|
+
reconnectBaseDelay?: number;
|
|
28
|
+
}
|
|
29
|
+
export type ChannelConnectionState = 'connected' | 'connecting' | 'disconnected' | 'reconnecting';
|
|
30
|
+
export interface ChannelClient {
|
|
31
|
+
/**
|
|
32
|
+
* Subscribe a handler to a logical channel. Returns `unsubscribe`.
|
|
33
|
+
* StrictMode-safe: unsubscribing debounces the actual close by 100ms so a
|
|
34
|
+
* double-mount resubscription reuses the live socket.
|
|
35
|
+
*/
|
|
36
|
+
subscribe: (channel: string, handler: ChannelMessageHandler, extraParams?: Record<string, string | number>) => () => void;
|
|
37
|
+
/** Send a string or JSON-serializable payload over a channel. */
|
|
38
|
+
send: (channel: string, payload: unknown, extraParams?: Record<string, string | number>) => void;
|
|
39
|
+
/** Close every open connection (e.g. on app teardown). */
|
|
40
|
+
disconnectAll: () => void;
|
|
41
|
+
/** Connection state for a channel. */
|
|
42
|
+
getConnectionState: (channel: string) => ChannelConnectionState;
|
|
43
|
+
}
|
|
44
|
+
export declare function createChannelClient(options: ChannelClientOptions): ChannelClient;
|
|
45
|
+
//# sourceMappingURL=channels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../src/channels.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,kDAAkD;AAClD,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAA;AAEjE,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAA;IACf,iEAAiE;IACjE,QAAQ,EAAE,MAAM,MAAM,GAAG,IAAI,CAAA;IAC7B,0DAA0D;IAC1D,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,uEAAuE;IACvE,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED,MAAM,MAAM,sBAAsB,GAC9B,WAAW,GACX,YAAY,GACZ,cAAc,GACd,cAAc,CAAA;AAYlB,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,SAAS,EAAE,CACT,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,qBAAqB,EAC9B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KAC1C,MAAM,IAAI,CAAA;IACf,iEAAiE;IACjE,IAAI,EAAE,CACJ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,KAC1C,IAAI,CAAA;IACT,0DAA0D;IAC1D,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,sCAAsC;IACtC,kBAAkB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,sBAAsB,CAAA;CAChE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,oBAAoB,GAAG,aAAa,CA+MhF"}
|
package/dist/channels.js
ADDED
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-channel WebSocket client.
|
|
3
|
+
*
|
|
4
|
+
* Complements the single-socket `WebSocketProvider`: some backends (hubs
|
|
5
|
+
* that route by logical channel — notifications, chat, live TV) expect ONE
|
|
6
|
+
* connection PER channel, addressed by query params:
|
|
7
|
+
*
|
|
8
|
+
* wss://api.example.com/ws?channel=chat&token=<jwt>&with=42
|
|
9
|
+
*
|
|
10
|
+
* This client manages that pool imperatively and framework-agnostically:
|
|
11
|
+
* auto-reconnect with exponential backoff, React StrictMode-safe
|
|
12
|
+
* subscription (100ms close debounce so double-mount doesn't drop the
|
|
13
|
+
* socket), and lazy connection per channel.
|
|
14
|
+
*
|
|
15
|
+
* Origin: battle-tested client contributed upstream from doctores.lat.
|
|
16
|
+
*/
|
|
17
|
+
export function createChannelClient(options) {
|
|
18
|
+
const connections = new Map();
|
|
19
|
+
const maxReconnectAttempts = options.maxReconnectAttempts ?? 5;
|
|
20
|
+
const reconnectBaseDelay = options.reconnectBaseDelay ?? 1000;
|
|
21
|
+
function buildUrl(channel, token, extraParams) {
|
|
22
|
+
const url = new URL(options.baseUrl);
|
|
23
|
+
url.searchParams.set('channel', channel);
|
|
24
|
+
url.searchParams.set('token', token);
|
|
25
|
+
if (extraParams) {
|
|
26
|
+
Object.entries(extraParams).forEach(([key, value]) => {
|
|
27
|
+
url.searchParams.set(key, String(value));
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return url.toString();
|
|
31
|
+
}
|
|
32
|
+
function createConnection(channel, existingHandlers, extraParams) {
|
|
33
|
+
const token = options.getToken();
|
|
34
|
+
if (!token) {
|
|
35
|
+
console.warn('[ws:channels] No token available for channel', channel);
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
const socket = new WebSocket(buildUrl(channel, token, extraParams));
|
|
39
|
+
const handlers = existingHandlers ?? new Set();
|
|
40
|
+
const connection = {
|
|
41
|
+
socket,
|
|
42
|
+
handlers,
|
|
43
|
+
reconnectAttempts: 0,
|
|
44
|
+
reconnectTimeout: null,
|
|
45
|
+
closeTimeout: null,
|
|
46
|
+
isClosed: false,
|
|
47
|
+
extraParams,
|
|
48
|
+
};
|
|
49
|
+
socket.onopen = () => {
|
|
50
|
+
connection.reconnectAttempts = 0;
|
|
51
|
+
};
|
|
52
|
+
socket.onmessage = (event) => {
|
|
53
|
+
handlers.forEach((handler) => handler(event));
|
|
54
|
+
};
|
|
55
|
+
socket.onclose = (event) => {
|
|
56
|
+
// Reconnect only when: not intentionally closed, someone is still
|
|
57
|
+
// listening, attempts remain, and the closure wasn't clean (1000).
|
|
58
|
+
if (!connection.isClosed &&
|
|
59
|
+
handlers.size > 0 &&
|
|
60
|
+
connection.reconnectAttempts < maxReconnectAttempts &&
|
|
61
|
+
event.code !== 1000) {
|
|
62
|
+
const delay = reconnectBaseDelay * Math.pow(2, connection.reconnectAttempts);
|
|
63
|
+
connection.reconnectTimeout = setTimeout(() => {
|
|
64
|
+
connection.reconnectAttempts++;
|
|
65
|
+
const newConn = createConnection(channel, handlers, extraParams);
|
|
66
|
+
if (newConn) {
|
|
67
|
+
// Preserve the attempt counter across the replacement socket so
|
|
68
|
+
// the backoff caps at maxReconnectAttempts overall.
|
|
69
|
+
newConn.reconnectAttempts = connection.reconnectAttempts;
|
|
70
|
+
connections.set(channel, newConn);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
connections.delete(channel);
|
|
74
|
+
}
|
|
75
|
+
}, delay);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
connections.delete(channel);
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
socket.onerror = (event) => {
|
|
82
|
+
console.error('[ws:channels] Error on channel', channel, event);
|
|
83
|
+
};
|
|
84
|
+
connections.set(channel, connection);
|
|
85
|
+
return connection;
|
|
86
|
+
}
|
|
87
|
+
function ensureConnection(channel, extraParams) {
|
|
88
|
+
const existing = connections.get(channel);
|
|
89
|
+
if (existing &&
|
|
90
|
+
existing.socket.readyState !== WebSocket.CLOSED &&
|
|
91
|
+
existing.socket.readyState !== WebSocket.CLOSING) {
|
|
92
|
+
return existing;
|
|
93
|
+
}
|
|
94
|
+
if (existing) {
|
|
95
|
+
if (existing.reconnectTimeout)
|
|
96
|
+
clearTimeout(existing.reconnectTimeout);
|
|
97
|
+
connections.delete(channel);
|
|
98
|
+
}
|
|
99
|
+
return createConnection(channel, undefined, extraParams);
|
|
100
|
+
}
|
|
101
|
+
function subscribe(channel, handler, extraParams) {
|
|
102
|
+
const conn = ensureConnection(channel, extraParams);
|
|
103
|
+
if (!conn)
|
|
104
|
+
return () => { };
|
|
105
|
+
// Cancel a pending close (StrictMode resubscription).
|
|
106
|
+
if (conn.closeTimeout) {
|
|
107
|
+
clearTimeout(conn.closeTimeout);
|
|
108
|
+
conn.closeTimeout = null;
|
|
109
|
+
conn.isClosed = false;
|
|
110
|
+
}
|
|
111
|
+
conn.handlers.add(handler);
|
|
112
|
+
return () => {
|
|
113
|
+
const current = connections.get(channel);
|
|
114
|
+
if (!current)
|
|
115
|
+
return;
|
|
116
|
+
current.handlers.delete(handler);
|
|
117
|
+
if (current.handlers.size > 0)
|
|
118
|
+
return;
|
|
119
|
+
if (current.closeTimeout)
|
|
120
|
+
clearTimeout(current.closeTimeout);
|
|
121
|
+
// 100ms debounce lets StrictMode resubscribe before the real close.
|
|
122
|
+
current.closeTimeout = setTimeout(() => {
|
|
123
|
+
if (current.handlers.size > 0)
|
|
124
|
+
return;
|
|
125
|
+
current.isClosed = true;
|
|
126
|
+
if (current.reconnectTimeout) {
|
|
127
|
+
clearTimeout(current.reconnectTimeout);
|
|
128
|
+
current.reconnectTimeout = null;
|
|
129
|
+
}
|
|
130
|
+
if (current.socket.readyState === WebSocket.OPEN) {
|
|
131
|
+
current.socket.close(1000, 'No more handlers');
|
|
132
|
+
}
|
|
133
|
+
else if (current.socket.readyState === WebSocket.CONNECTING) {
|
|
134
|
+
current.socket.addEventListener('open', () => {
|
|
135
|
+
if (current.handlers.size === 0) {
|
|
136
|
+
current.socket.close(1000, 'No more handlers');
|
|
137
|
+
}
|
|
138
|
+
}, { once: true });
|
|
139
|
+
}
|
|
140
|
+
connections.delete(channel);
|
|
141
|
+
}, 100);
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
function send(channel, payload, extraParams) {
|
|
145
|
+
const conn = ensureConnection(channel, extraParams);
|
|
146
|
+
if (!conn)
|
|
147
|
+
return;
|
|
148
|
+
const data = typeof payload === 'string' ? payload : JSON.stringify(payload);
|
|
149
|
+
if (conn.socket.readyState === WebSocket.OPEN) {
|
|
150
|
+
conn.socket.send(data);
|
|
151
|
+
}
|
|
152
|
+
else if (conn.socket.readyState === WebSocket.CONNECTING) {
|
|
153
|
+
conn.socket.addEventListener('open', () => conn.socket.send(data), {
|
|
154
|
+
once: true,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
console.warn('[ws:channels] Cannot send, socket not open for channel', channel);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
function disconnectAll() {
|
|
162
|
+
connections.forEach((conn) => {
|
|
163
|
+
conn.isClosed = true;
|
|
164
|
+
if (conn.reconnectTimeout)
|
|
165
|
+
clearTimeout(conn.reconnectTimeout);
|
|
166
|
+
if (conn.closeTimeout)
|
|
167
|
+
clearTimeout(conn.closeTimeout);
|
|
168
|
+
if (conn.socket.readyState === WebSocket.OPEN ||
|
|
169
|
+
conn.socket.readyState === WebSocket.CONNECTING) {
|
|
170
|
+
conn.socket.close(1000, 'Disconnect all');
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
connections.clear();
|
|
174
|
+
}
|
|
175
|
+
function getConnectionState(channel) {
|
|
176
|
+
const conn = connections.get(channel);
|
|
177
|
+
if (!conn)
|
|
178
|
+
return 'disconnected';
|
|
179
|
+
if (conn.reconnectTimeout)
|
|
180
|
+
return 'reconnecting';
|
|
181
|
+
switch (conn.socket.readyState) {
|
|
182
|
+
case WebSocket.CONNECTING:
|
|
183
|
+
return 'connecting';
|
|
184
|
+
case WebSocket.OPEN:
|
|
185
|
+
return 'connected';
|
|
186
|
+
default:
|
|
187
|
+
return 'disconnected';
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return { subscribe, send, disconnectAll, getConnectionState };
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=channels.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channels.js","sourceRoot":"","sources":["../src/channels.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,4 +2,6 @@ export { WebSocketProvider, WebSocketContext } from './provider';
|
|
|
2
2
|
export { useWebSocket, useWebSocketMessage } from './hooks';
|
|
3
3
|
export { WebSocketStatus } from './types';
|
|
4
4
|
export type { WebSocketMessage, WebSocketContextValue, WebSocketProviderProps, SendPayload, TokenGetter, } from './types';
|
|
5
|
+
export { createChannelClient } from './channels';
|
|
6
|
+
export type { ChannelClient, ChannelClientOptions, ChannelMessageHandler, ChannelConnectionState, } from './channels';
|
|
5
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACzC,YAAY,EACV,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,WAAW,EACX,WAAW,GACZ,MAAM,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AACzC,YAAY,EACV,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,WAAW,EACX,WAAW,GACZ,MAAM,SAAS,CAAA;AAIhB,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAChD,YAAY,EACV,aAAa,EACb,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,YAAY,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export { WebSocketProvider, WebSocketContext } from './provider';
|
|
2
2
|
export { useWebSocket, useWebSocketMessage } from './hooks';
|
|
3
3
|
export { WebSocketStatus } from './types';
|
|
4
|
+
// Multi-channel imperative client (one socket per logical channel, routed
|
|
5
|
+
// by query params). Complements the single-socket WebSocketProvider.
|
|
6
|
+
export { createChannelClient } from './channels';
|
|
4
7
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAChE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AASzC,0EAA0E;AAC1E,qEAAqE;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA"}
|
package/dist/native.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"}
|
package/dist/native.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"}
|
package/dist/provider.d.ts
CHANGED
|
@@ -5,5 +5,5 @@ export declare const WebSocketContext: import("react").Context<WebSocketContextV
|
|
|
5
5
|
* auto-reconnect (exponential backoff), optional heartbeat, typed message
|
|
6
6
|
* dispatch, and a pub/sub registry consumed by `useWebSocketMessage`.
|
|
7
7
|
*/
|
|
8
|
-
export declare function WebSocketProvider<TMessage extends WebSocketMessage = WebSocketMessage>(props: WebSocketProviderProps<TMessage>): import("react
|
|
8
|
+
export declare function WebSocketProvider<TMessage extends WebSocketMessage = WebSocketMessage>(props: WebSocketProviderProps<TMessage>): import("react").JSX.Element;
|
|
9
9
|
//# sourceMappingURL=provider.d.ts.map
|
package/dist/provider.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAEV,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,SAAS,CAAA;AAIhB,eAAO,MAAM,gBAAgB,iEAE5B,CAAA;AAwBD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,SAAS,gBAAgB,GAAG,gBAAgB,EACpF,KAAK,EAAE,sBAAsB,CAAC,QAAQ,CAAC
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAEV,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,SAAS,CAAA;AAIhB,eAAO,MAAM,gBAAgB,iEAE5B,CAAA;AAwBD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,SAAS,gBAAgB,GAAG,gBAAgB,EACpF,KAAK,EAAE,sBAAsB,CAAC,QAAQ,CAAC,+BA+RxC"}
|
package/dist/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EACb,WAAW,EACX,SAAS,EACT,OAAO,EACP,MAAM,EACN,QAAQ,GACT,MAAM,OAAO,CAAA;AAOd,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzC,8DAA8D;AAC9D,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAC3C,SAAS,CACV,CAAA;AAED,MAAM,cAAc,GAAG,MAAM,CAAA;AAE7B,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC;QAC5E,CAAC,CAAC,KAAK,YAAY,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACjE,CAAC;AAED,SAAS,SAAS,CAAC,OAAoB;IACrC,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAA;IAC/C,IAAI,OAAO,YAAY,IAAI;QAAE,OAAO,OAAO,CAAA;IAC3C,IAAI,OAAO,YAAY,WAAW;QAAE,OAAO,OAAO,CAAA;IAClD,IAAI,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC;QAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare enum ReadyState {
|
|
2
|
+
CONNECTING = 0,
|
|
3
|
+
OPEN = 1,
|
|
4
|
+
CLOSING = 2,
|
|
5
|
+
CLOSED = 3
|
|
6
|
+
}
|
|
7
|
+
interface UseWebSocketOptions {
|
|
8
|
+
shouldReconnect?: (event: CloseEvent) => boolean;
|
|
9
|
+
reconnectAttempts?: number;
|
|
10
|
+
reconnectInterval?: number;
|
|
11
|
+
onOpen?: (event: Event) => void;
|
|
12
|
+
onClose?: (event: CloseEvent) => void;
|
|
13
|
+
onError?: (event: Event) => void;
|
|
14
|
+
}
|
|
15
|
+
interface UseWebSocketReturn {
|
|
16
|
+
sendMessage: (message: string) => void;
|
|
17
|
+
lastMessage: MessageEvent | null;
|
|
18
|
+
readyState: ReadyState;
|
|
19
|
+
}
|
|
20
|
+
export declare function useWebSocket(url: string | null, options?: UseWebSocketOptions): UseWebSocketReturn;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=use-websocket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-websocket.d.ts","sourceRoot":"","sources":["../src/use-websocket.ts"],"names":[],"mappings":"AAEA,oBAAY,UAAU;IAClB,UAAU,IAAI;IACd,IAAI,IAAI;IACR,OAAO,IAAI;IACX,MAAM,IAAI;CACb;AAED,UAAU,mBAAmB;IACzB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAA;IAChD,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IAC/B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;IACrC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;CACnC;AAED,UAAU,kBAAkB;IACxB,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,WAAW,EAAE,YAAY,GAAG,IAAI,CAAA;IAChC,UAAU,EAAE,UAAU,CAAA;CACzB;AAED,wBAAgB,YAAY,CACxB,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,OAAO,GAAE,mBAAwB,GAClC,kBAAkB,CAuFpB"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { useRef, useState, useCallback, useEffect } from 'react';
|
|
2
|
+
export var ReadyState;
|
|
3
|
+
(function (ReadyState) {
|
|
4
|
+
ReadyState[ReadyState["CONNECTING"] = 0] = "CONNECTING";
|
|
5
|
+
ReadyState[ReadyState["OPEN"] = 1] = "OPEN";
|
|
6
|
+
ReadyState[ReadyState["CLOSING"] = 2] = "CLOSING";
|
|
7
|
+
ReadyState[ReadyState["CLOSED"] = 3] = "CLOSED";
|
|
8
|
+
})(ReadyState || (ReadyState = {}));
|
|
9
|
+
export function useWebSocket(url, options = {}) {
|
|
10
|
+
const { reconnectAttempts = 10, reconnectInterval = 3000, } = options;
|
|
11
|
+
const [lastMessage, setLastMessage] = useState(null);
|
|
12
|
+
const [readyState, setReadyState] = useState(ReadyState.CLOSED);
|
|
13
|
+
const wsRef = useRef(null);
|
|
14
|
+
const reconnectCount = useRef(0);
|
|
15
|
+
const reconnectTimer = useRef(undefined);
|
|
16
|
+
const optionsRef = useRef(options);
|
|
17
|
+
optionsRef.current = options;
|
|
18
|
+
const urlRef = useRef(url);
|
|
19
|
+
urlRef.current = url;
|
|
20
|
+
const cleanup = useCallback(() => {
|
|
21
|
+
clearTimeout(reconnectTimer.current);
|
|
22
|
+
if (wsRef.current) {
|
|
23
|
+
wsRef.current.onopen = null;
|
|
24
|
+
wsRef.current.onclose = null;
|
|
25
|
+
wsRef.current.onerror = null;
|
|
26
|
+
wsRef.current.onmessage = null;
|
|
27
|
+
wsRef.current.close();
|
|
28
|
+
wsRef.current = null;
|
|
29
|
+
}
|
|
30
|
+
}, []);
|
|
31
|
+
const connect = useCallback(() => {
|
|
32
|
+
const currentUrl = urlRef.current;
|
|
33
|
+
if (!currentUrl)
|
|
34
|
+
return;
|
|
35
|
+
cleanup();
|
|
36
|
+
setReadyState(ReadyState.CONNECTING);
|
|
37
|
+
const ws = new WebSocket(currentUrl);
|
|
38
|
+
wsRef.current = ws;
|
|
39
|
+
ws.onopen = (event) => {
|
|
40
|
+
reconnectCount.current = 0;
|
|
41
|
+
setReadyState(ReadyState.OPEN);
|
|
42
|
+
optionsRef.current.onOpen?.(event);
|
|
43
|
+
};
|
|
44
|
+
ws.onmessage = (event) => {
|
|
45
|
+
setLastMessage(event);
|
|
46
|
+
};
|
|
47
|
+
ws.onerror = (event) => {
|
|
48
|
+
optionsRef.current.onError?.(event);
|
|
49
|
+
};
|
|
50
|
+
ws.onclose = (event) => {
|
|
51
|
+
setReadyState(ReadyState.CLOSED);
|
|
52
|
+
optionsRef.current.onClose?.(event);
|
|
53
|
+
if (optionsRef.current.shouldReconnect?.(event) &&
|
|
54
|
+
reconnectCount.current < (optionsRef.current.reconnectAttempts ?? reconnectAttempts)) {
|
|
55
|
+
reconnectTimer.current = setTimeout(() => {
|
|
56
|
+
reconnectCount.current++;
|
|
57
|
+
connect();
|
|
58
|
+
}, optionsRef.current.reconnectInterval ?? reconnectInterval);
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}, [cleanup, reconnectAttempts, reconnectInterval]);
|
|
62
|
+
const sendMessage = useCallback((message) => {
|
|
63
|
+
if (wsRef.current?.readyState === WebSocket.OPEN) {
|
|
64
|
+
wsRef.current.send(message);
|
|
65
|
+
}
|
|
66
|
+
}, []);
|
|
67
|
+
useEffect(() => {
|
|
68
|
+
if (url) {
|
|
69
|
+
reconnectCount.current = 0;
|
|
70
|
+
connect();
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
cleanup();
|
|
74
|
+
setReadyState(ReadyState.CLOSED);
|
|
75
|
+
}
|
|
76
|
+
return cleanup;
|
|
77
|
+
}, [url, connect, cleanup]);
|
|
78
|
+
return { sendMessage, lastMessage, readyState };
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=use-websocket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-websocket.js","sourceRoot":"","sources":["../src/use-websocket.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@asteby/metacore-websocket",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Metacore WebSocket provider — auto-reconnect, typed messages, channel subscriptions",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -27,6 +27,10 @@
|
|
|
27
27
|
"./hooks": {
|
|
28
28
|
"types": "./dist/hooks.d.ts",
|
|
29
29
|
"import": "./dist/hooks.js"
|
|
30
|
+
},
|
|
31
|
+
"./native": {
|
|
32
|
+
"types": "./dist/native.d.ts",
|
|
33
|
+
"import": "./dist/native.js"
|
|
30
34
|
}
|
|
31
35
|
},
|
|
32
36
|
"peerDependencies": {
|
|
@@ -38,7 +42,7 @@
|
|
|
38
42
|
"@types/react-dom": "^19.0.0",
|
|
39
43
|
"react": "^19.2.4",
|
|
40
44
|
"react-dom": "^19.2.4",
|
|
41
|
-
"typescript": "^
|
|
45
|
+
"typescript": "^6.0.0"
|
|
42
46
|
},
|
|
43
47
|
"publishConfig": {
|
|
44
48
|
"access": "public"
|