@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.
@@ -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"}
@@ -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
@@ -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"}
@@ -0,0 +1,2 @@
1
+ export { useWebSocket, ReadyState } from './use-websocket';
2
+ //# sourceMappingURL=native.d.ts.map
@@ -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,2 @@
1
+ export { useWebSocket, ReadyState } from './use-websocket';
2
+ //# sourceMappingURL=native.js.map
@@ -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"}
@@ -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/jsx-runtime").JSX.Element;
8
+ export declare function WebSocketProvider<TMessage extends WebSocketMessage = WebSocketMessage>(props: WebSocketProviderProps<TMessage>): import("react").JSX.Element;
9
9
  //# sourceMappingURL=provider.d.ts.map
@@ -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,2CA+RxC"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.tsx"],"names":[],"mappings":"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"}
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.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": "^5.6.0"
45
+ "typescript": "^6.0.0"
42
46
  },
43
47
  "publishConfig": {
44
48
  "access": "public"