@agentxjs/network 1.6.0 → 1.7.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/index.d.ts +1 -0
- package/dist/index.js +35 -3
- package/dist/index.js.map +3 -3
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ import { ChannelClient, ChannelClientOptions, Unsubscribe as Unsubscribe2 } from
|
|
|
24
24
|
declare class WebSocketClient implements ChannelClient {
|
|
25
25
|
private ws;
|
|
26
26
|
private serverUrl;
|
|
27
|
+
private headers?;
|
|
27
28
|
private messageHandlers;
|
|
28
29
|
private openHandlers;
|
|
29
30
|
private closeHandlers;
|
package/dist/index.js
CHANGED
|
@@ -211,6 +211,7 @@ var isBrowser = typeof globalThis !== "undefined" && typeof globalThis.window !=
|
|
|
211
211
|
class WebSocketClient {
|
|
212
212
|
ws = null;
|
|
213
213
|
serverUrl;
|
|
214
|
+
headers;
|
|
214
215
|
messageHandlers = new Set;
|
|
215
216
|
openHandlers = new Set;
|
|
216
217
|
closeHandlers = new Set;
|
|
@@ -220,6 +221,7 @@ class WebSocketClient {
|
|
|
220
221
|
throw new Error("Use createBrowserWebSocketClient() in browser environment for auto-reconnect support");
|
|
221
222
|
}
|
|
222
223
|
this.serverUrl = options.serverUrl;
|
|
224
|
+
this.headers = options.headers;
|
|
223
225
|
}
|
|
224
226
|
get readyState() {
|
|
225
227
|
if (!this.ws)
|
|
@@ -238,7 +240,17 @@ class WebSocketClient {
|
|
|
238
240
|
throw new Error("Already connected or connecting");
|
|
239
241
|
}
|
|
240
242
|
const { WebSocket: NodeWebSocket } = await import("ws");
|
|
241
|
-
|
|
243
|
+
let resolvedHeaders;
|
|
244
|
+
if (this.headers) {
|
|
245
|
+
if (typeof this.headers === "function") {
|
|
246
|
+
resolvedHeaders = await Promise.resolve(this.headers());
|
|
247
|
+
} else {
|
|
248
|
+
resolvedHeaders = this.headers;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
this.ws = new NodeWebSocket(this.serverUrl, {
|
|
252
|
+
headers: resolvedHeaders
|
|
253
|
+
});
|
|
242
254
|
return new Promise((resolve, reject) => {
|
|
243
255
|
const onOpen = () => {
|
|
244
256
|
logger2.info("WebSocket connected", { serverUrl: this.serverUrl });
|
|
@@ -361,6 +373,14 @@ class BrowserWebSocketClient {
|
|
|
361
373
|
if (this.ws) {
|
|
362
374
|
throw new Error("Already connected or connecting");
|
|
363
375
|
}
|
|
376
|
+
let resolvedHeaders;
|
|
377
|
+
if (this.options.headers) {
|
|
378
|
+
if (typeof this.options.headers === "function") {
|
|
379
|
+
resolvedHeaders = await Promise.resolve(this.options.headers());
|
|
380
|
+
} else {
|
|
381
|
+
resolvedHeaders = this.options.headers;
|
|
382
|
+
}
|
|
383
|
+
}
|
|
364
384
|
if (this.options.autoReconnect) {
|
|
365
385
|
const ReconnectingWebSocket = (await import("reconnecting-websocket")).default;
|
|
366
386
|
this.ws = new ReconnectingWebSocket(this.serverUrl, [], {
|
|
@@ -375,13 +395,25 @@ class BrowserWebSocketClient {
|
|
|
375
395
|
this.ws = new WebSocket(this.serverUrl);
|
|
376
396
|
}
|
|
377
397
|
return new Promise((resolve, reject) => {
|
|
378
|
-
const onOpen = () => {
|
|
398
|
+
const onOpen = async () => {
|
|
379
399
|
if (this.hasConnectedBefore) {
|
|
380
400
|
logger2.info("WebSocket reconnected successfully", { serverUrl: this.serverUrl });
|
|
381
401
|
} else {
|
|
382
402
|
logger2.info("WebSocket connected", { serverUrl: this.serverUrl });
|
|
383
403
|
this.hasConnectedBefore = true;
|
|
384
404
|
}
|
|
405
|
+
if (resolvedHeaders && Object.keys(resolvedHeaders).length > 0) {
|
|
406
|
+
try {
|
|
407
|
+
const authMessage = JSON.stringify({
|
|
408
|
+
type: "auth",
|
|
409
|
+
headers: resolvedHeaders
|
|
410
|
+
});
|
|
411
|
+
this.ws.send(authMessage);
|
|
412
|
+
logger2.info("Sent authentication message to server");
|
|
413
|
+
} catch (error) {
|
|
414
|
+
logger2.error("Failed to send authentication message", { error });
|
|
415
|
+
}
|
|
416
|
+
}
|
|
385
417
|
for (const handler of this.openHandlers) {
|
|
386
418
|
handler();
|
|
387
419
|
}
|
|
@@ -479,4 +511,4 @@ export {
|
|
|
479
511
|
WebSocketClient
|
|
480
512
|
};
|
|
481
513
|
|
|
482
|
-
//# debugId=
|
|
514
|
+
//# debugId=5F5AFA22D2A5976F64756E2164756E21
|
package/dist/index.js.map
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
"sources": ["../src/WebSocketServer.ts", "../src/WebSocketClient.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * WebSocket Server implementation of ChannelServer\n */\n\nimport type { WebSocket as WS, WebSocketServer as WSS } from \"ws\";\nimport type {\n ChannelServer,\n ChannelConnection,\n ChannelServerOptions,\n MinimalHTTPServer,\n Unsubscribe,\n} from \"@agentxjs/types/network\";\nimport { createLogger } from \"@agentxjs/common\";\n\nconst logger = createLogger(\"network/WebSocketServer\");\n\n/**\n * WebSocket connection implementation\n */\nclass WebSocketConnection implements ChannelConnection {\n public readonly id: string;\n private ws: WS;\n private messageHandlers = new Set<(message: string) => void>();\n private closeHandlers = new Set<() => void>();\n private errorHandlers = new Set<(error: Error) => void>();\n private heartbeatInterval?: ReturnType<typeof setInterval>;\n private isAlive = true;\n\n constructor(ws: WS, options: ChannelServerOptions) {\n this.ws = ws;\n this.id = `conn_${Date.now()}_${Math.random().toString(36).substring(2, 8)}`;\n\n // Setup heartbeat if enabled\n if (options.heartbeat !== false) {\n const interval = options.heartbeatInterval || 30000;\n\n ws.on(\"pong\", () => {\n this.isAlive = true;\n logger.debug(\"Heartbeat pong received\", { id: this.id });\n });\n\n this.heartbeatInterval = setInterval(() => {\n if (!this.isAlive) {\n logger.warn(\"Client heartbeat timeout, terminating connection\", { id: this.id });\n clearInterval(this.heartbeatInterval);\n ws.terminate();\n return;\n }\n this.isAlive = false;\n ws.ping();\n logger.debug(\"Heartbeat ping sent\", { id: this.id });\n }, interval);\n }\n\n // Setup message handler\n ws.on(\"message\", (data: Buffer) => {\n const message = data.toString();\n for (const handler of this.messageHandlers) {\n handler(message);\n }\n });\n\n // Setup close handler\n ws.on(\"close\", () => {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n }\n for (const handler of this.closeHandlers) {\n handler();\n }\n });\n\n // Setup error handler\n ws.on(\"error\", (err: Error) => {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n }\n for (const handler of this.errorHandlers) {\n handler(err);\n }\n });\n }\n\n send(message: string): void {\n if (this.ws.readyState === 1) {\n // WebSocket.OPEN\n this.ws.send(message);\n }\n }\n\n onMessage(handler: (message: string) => void): Unsubscribe {\n this.messageHandlers.add(handler);\n return () => {\n this.messageHandlers.delete(handler);\n };\n }\n\n onClose(handler: () => void): Unsubscribe {\n this.closeHandlers.add(handler);\n return () => {\n this.closeHandlers.delete(handler);\n };\n }\n\n onError(handler: (error: Error) => void): Unsubscribe {\n this.errorHandlers.add(handler);\n return () => {\n this.errorHandlers.delete(handler);\n };\n }\n\n close(): void {\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n }\n this.ws.close();\n }\n}\n\n/**\n * WebSocket Server\n */\nexport class WebSocketServer implements ChannelServer {\n private wss: WSS | null = null;\n private connections = new Set<WebSocketConnection>();\n private connectionHandlers = new Set<(connection: ChannelConnection) => void>();\n private options: ChannelServerOptions;\n private attachedToServer = false;\n\n constructor(options: ChannelServerOptions = {}) {\n this.options = options;\n }\n\n async listen(port: number, host: string = \"0.0.0.0\"): Promise<void> {\n if (this.wss) {\n throw new Error(\"Server already listening\");\n }\n if (this.attachedToServer) {\n throw new Error(\n \"Cannot listen when attached to existing server. The server should call listen() instead.\"\n );\n }\n\n const { WebSocketServer: WSS } = await import(\"ws\");\n this.wss = new WSS({ port, host });\n\n this.wss.on(\"connection\", (ws: WS) => {\n this.handleConnection(ws);\n });\n\n logger.info(\"WebSocket server listening\", { port, host });\n }\n\n attach(server: MinimalHTTPServer, path: string = \"/ws\"): void {\n if (this.wss) {\n throw new Error(\"Server already initialized\");\n }\n\n import(\"ws\").then(({ WebSocketServer: WSS }) => {\n this.wss = new WSS({ noServer: true });\n\n // Handle WebSocket upgrade on the HTTP server\n server.on(\"upgrade\", (request, socket, head) => {\n const url = new URL(request.url || \"\", `http://${request.headers.host}`);\n if (url.pathname === path) {\n this.wss!.handleUpgrade(request as any, socket as any, head as any, (ws: WS) => {\n this.wss!.emit(\"connection\", ws, request);\n });\n } else {\n (socket as any).destroy();\n }\n });\n\n this.wss.on(\"connection\", (ws: WS) => {\n this.handleConnection(ws);\n });\n\n this.attachedToServer = true;\n logger.info(\"WebSocket attached to existing HTTP server\", { path });\n });\n }\n\n private handleConnection(ws: WS): void {\n const connection = new WebSocketConnection(ws, this.options);\n this.connections.add(connection);\n\n logger.info(\"Client connected\", {\n connectionId: connection.id,\n totalConnections: this.connections.size,\n });\n\n connection.onClose(() => {\n this.connections.delete(connection);\n logger.info(\"Client disconnected\", {\n connectionId: connection.id,\n totalConnections: this.connections.size,\n });\n });\n\n // Notify handlers\n for (const handler of this.connectionHandlers) {\n handler(connection);\n }\n }\n\n onConnection(handler: (connection: ChannelConnection) => void): Unsubscribe {\n this.connectionHandlers.add(handler);\n return () => {\n this.connectionHandlers.delete(handler);\n };\n }\n\n broadcast(message: string): void {\n for (const connection of this.connections) {\n connection.send(message);\n }\n }\n\n async close(): Promise<void> {\n if (!this.wss) return;\n\n for (const connection of this.connections) {\n connection.close();\n }\n this.connections.clear();\n\n // Don't close the server if attached to existing HTTP server\n if (!this.attachedToServer) {\n await new Promise<void>((resolve) => {\n this.wss!.close(() => resolve());\n });\n }\n this.wss = null;\n }\n\n async dispose(): Promise<void> {\n await this.close();\n this.connectionHandlers.clear();\n }\n}\n",
|
|
6
|
-
"/**\n * WebSocket Client implementation of ChannelClient\n */\n\nimport type { ChannelClient, ChannelClientOptions, Unsubscribe } from \"@agentxjs/types/network\";\nimport { createLogger } from \"@agentxjs/common\";\n\nconst logger = createLogger(\"network/WebSocketClient\");\n\n// Detect browser environment\nconst isBrowser =\n typeof globalThis !== \"undefined\" &&\n typeof (globalThis as any).window !== \"undefined\" &&\n typeof (globalThis as any).window.WebSocket !== \"undefined\";\n\n/**\n * WebSocket Client (Node.js version - no auto-reconnect)\n */\nexport class WebSocketClient implements ChannelClient {\n private ws: WebSocket | null = null;\n private serverUrl: string;\n private messageHandlers = new Set<(message: string) => void>();\n private openHandlers = new Set<() => void>();\n private closeHandlers = new Set<() => void>();\n private errorHandlers = new Set<(error: Error) => void>();\n\n constructor(options: ChannelClientOptions) {\n if (isBrowser) {\n throw new Error(\n \"Use createBrowserWebSocketClient() in browser environment for auto-reconnect support\"\n );\n }\n\n this.serverUrl = options.serverUrl;\n }\n\n get readyState(): \"connecting\" | \"open\" | \"closing\" | \"closed\" {\n if (!this.ws) return \"closed\";\n const state = this.ws.readyState;\n if (state === 0) return \"connecting\";\n if (state === 1) return \"open\";\n if (state === 2) return \"closing\";\n return \"closed\";\n }\n\n async connect(): Promise<void> {\n if (this.ws) {\n throw new Error(\"Already connected or connecting\");\n }\n\n const { WebSocket: NodeWebSocket } = await import(\"ws\");\n this.ws = new NodeWebSocket(this.serverUrl) as unknown as WebSocket;\n\n return new Promise<void>((resolve, reject) => {\n const onOpen = () => {\n logger.info(\"WebSocket connected\", { serverUrl: this.serverUrl });\n for (const handler of this.openHandlers) {\n handler();\n }\n resolve();\n };\n\n const onError = (err?: Error) => {\n logger.error(\"WebSocket connection failed\", {\n serverUrl: this.serverUrl,\n error: err?.message,\n });\n reject(err || new Error(\"WebSocket connection failed\"));\n };\n\n (this.ws as any).once(\"open\", onOpen);\n (this.ws as any).once(\"error\", onError);\n\n // Setup permanent handlers\n (this.ws as any).on(\"message\", (data: Buffer) => {\n const message = data.toString();\n for (const handler of this.messageHandlers) {\n handler(message);\n }\n });\n\n (this.ws as any).on(\"close\", () => {\n logger.warn(\"WebSocket closed\");\n for (const handler of this.closeHandlers) {\n handler();\n }\n });\n\n (this.ws as any).on(\"error\", (err: Error) => {\n logger.error(\"WebSocket error\", { error: err.message });\n for (const handler of this.errorHandlers) {\n handler(err);\n }\n });\n });\n }\n\n send(message: string): void {\n if (!this.ws || this.ws.readyState !== 1) {\n throw new Error(\"WebSocket is not open\");\n }\n this.ws.send(message);\n }\n\n onMessage(handler: (message: string) => void): Unsubscribe {\n this.messageHandlers.add(handler);\n return () => {\n this.messageHandlers.delete(handler);\n };\n }\n\n onOpen(handler: () => void): Unsubscribe {\n this.openHandlers.add(handler);\n return () => {\n this.openHandlers.delete(handler);\n };\n }\n\n onClose(handler: () => void): Unsubscribe {\n this.closeHandlers.add(handler);\n return () => {\n this.closeHandlers.delete(handler);\n };\n }\n\n onError(handler: (error: Error) => void): Unsubscribe {\n this.errorHandlers.add(handler);\n return () => {\n this.errorHandlers.delete(handler);\n };\n }\n\n close(): void {\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n\n dispose(): void {\n this.close();\n this.messageHandlers.clear();\n this.openHandlers.clear();\n this.closeHandlers.clear();\n this.errorHandlers.clear();\n }\n}\n\n/**\n * Browser WebSocket Client with auto-reconnect\n */\nexport class BrowserWebSocketClient implements ChannelClient {\n private ws: WebSocket | null = null;\n private serverUrl: string;\n private options: ChannelClientOptions;\n private messageHandlers = new Set<(message: string) => void>();\n private openHandlers = new Set<() => void>();\n private closeHandlers = new Set<() => void>();\n private errorHandlers = new Set<(error: Error) => void>();\n private hasConnectedBefore = false; // Track if this is a reconnection\n\n constructor(options: ChannelClientOptions) {\n if (!isBrowser) {\n throw new Error(\"BrowserWebSocketClient can only be used in browser environment\");\n }\n\n this.serverUrl = options.serverUrl;\n this.options = {\n autoReconnect: true,\n minReconnectionDelay: 1000,\n maxReconnectionDelay: 10000,\n maxRetries: Infinity,\n connectionTimeout: 4000,\n debug: false,\n ...options,\n };\n }\n\n get readyState(): \"connecting\" | \"open\" | \"closing\" | \"closed\" {\n if (!this.ws) return \"closed\";\n const state = this.ws.readyState;\n if (state === 0) return \"connecting\";\n if (state === 1) return \"open\";\n if (state === 2) return \"closing\";\n return \"closed\";\n }\n\n async connect(): Promise<void> {\n if (this.ws) {\n throw new Error(\"Already connected or connecting\");\n }\n\n if (this.options.autoReconnect) {\n // Use reconnecting-websocket for auto-reconnect\n const ReconnectingWebSocket = (await import(\"reconnecting-websocket\")).default;\n this.ws = new ReconnectingWebSocket(this.serverUrl, [], {\n maxReconnectionDelay: this.options.maxReconnectionDelay,\n minReconnectionDelay: this.options.minReconnectionDelay,\n reconnectionDelayGrowFactor: 1.3,\n connectionTimeout: this.options.connectionTimeout,\n maxRetries: this.options.maxRetries,\n debug: this.options.debug,\n });\n } else {\n // Use native WebSocket\n this.ws = new WebSocket(this.serverUrl);\n }\n\n return new Promise<void>((resolve, reject) => {\n const onOpen = () => {\n if (this.hasConnectedBefore) {\n logger.info(\"WebSocket reconnected successfully\", { serverUrl: this.serverUrl });\n } else {\n logger.info(\"WebSocket connected\", { serverUrl: this.serverUrl });\n this.hasConnectedBefore = true;\n }\n for (const handler of this.openHandlers) {\n handler();\n }\n resolve();\n };\n\n const onError = (_event: Event) => {\n logger.error(\"WebSocket connection failed\", { serverUrl: this.serverUrl });\n const error = new Error(\"WebSocket connection failed\");\n for (const handler of this.errorHandlers) {\n handler(error);\n }\n reject(error);\n };\n\n this.ws!.addEventListener(\"open\", onOpen as any, { once: true });\n this.ws!.addEventListener(\"error\", onError as any, { once: true });\n\n // Setup permanent handlers\n this.ws!.addEventListener(\"message\", ((event: any) => {\n const message = event.data;\n for (const handler of this.messageHandlers) {\n handler(message);\n }\n }) as any);\n\n this.ws!.addEventListener(\"close\", (() => {\n logger.info(\"WebSocket closed, attempting to reconnect...\");\n for (const handler of this.closeHandlers) {\n handler();\n }\n }) as any);\n\n this.ws!.addEventListener(\"error\", ((_event: Event) => {\n logger.error(\"WebSocket error\");\n const error = new Error(\"WebSocket error\");\n for (const handler of this.errorHandlers) {\n handler(error);\n }\n }) as any);\n });\n }\n\n send(message: string): void {\n if (!this.ws || this.ws.readyState !== 1) {\n throw new Error(\"WebSocket is not open\");\n }\n this.ws.send(message);\n }\n\n onMessage(handler: (message: string) => void): Unsubscribe {\n this.messageHandlers.add(handler);\n return () => {\n this.messageHandlers.delete(handler);\n };\n }\n\n onOpen(handler: () => void): Unsubscribe {\n this.openHandlers.add(handler);\n return () => {\n this.openHandlers.delete(handler);\n };\n }\n\n onClose(handler: () => void): Unsubscribe {\n this.closeHandlers.add(handler);\n return () => {\n this.closeHandlers.delete(handler);\n };\n }\n\n onError(handler: (error: Error) => void): Unsubscribe {\n this.errorHandlers.add(handler);\n return () => {\n this.errorHandlers.delete(handler);\n };\n }\n\n close(): void {\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n\n dispose(): void {\n this.close();\n this.messageHandlers.clear();\n this.openHandlers.clear();\n this.closeHandlers.clear();\n this.errorHandlers.clear();\n }\n}\n\n/**\n * Factory function to create the appropriate WebSocket client\n */\nexport async function createWebSocketClient(options: ChannelClientOptions): Promise<ChannelClient> {\n if (isBrowser) {\n const client = new BrowserWebSocketClient(options);\n await client.connect();\n return client;\n } else {\n const client = new WebSocketClient(options);\n await client.connect();\n return client;\n }\n}\n"
|
|
6
|
+
"/**\n * WebSocket Client implementation of ChannelClient\n */\n\nimport type { ChannelClient, ChannelClientOptions, Unsubscribe } from \"@agentxjs/types/network\";\nimport { createLogger } from \"@agentxjs/common\";\n\nconst logger = createLogger(\"network/WebSocketClient\");\n\n// Detect browser environment\nconst isBrowser =\n typeof globalThis !== \"undefined\" &&\n typeof (globalThis as any).window !== \"undefined\" &&\n typeof (globalThis as any).window.WebSocket !== \"undefined\";\n\n/**\n * WebSocket Client (Node.js version - no auto-reconnect)\n */\nexport class WebSocketClient implements ChannelClient {\n private ws: WebSocket | null = null;\n private serverUrl: string;\n private headers?:\n | Record<string, string>\n | (() => Record<string, string> | Promise<Record<string, string>>);\n private messageHandlers = new Set<(message: string) => void>();\n private openHandlers = new Set<() => void>();\n private closeHandlers = new Set<() => void>();\n private errorHandlers = new Set<(error: Error) => void>();\n\n constructor(options: ChannelClientOptions) {\n if (isBrowser) {\n throw new Error(\n \"Use createBrowserWebSocketClient() in browser environment for auto-reconnect support\"\n );\n }\n\n this.serverUrl = options.serverUrl;\n this.headers = options.headers;\n }\n\n get readyState(): \"connecting\" | \"open\" | \"closing\" | \"closed\" {\n if (!this.ws) return \"closed\";\n const state = this.ws.readyState;\n if (state === 0) return \"connecting\";\n if (state === 1) return \"open\";\n if (state === 2) return \"closing\";\n return \"closed\";\n }\n\n async connect(): Promise<void> {\n if (this.ws) {\n throw new Error(\"Already connected or connecting\");\n }\n\n const { WebSocket: NodeWebSocket } = await import(\"ws\");\n\n // Resolve headers (support static, sync function, and async function)\n let resolvedHeaders: Record<string, string> | undefined;\n if (this.headers) {\n if (typeof this.headers === \"function\") {\n resolvedHeaders = await Promise.resolve(this.headers());\n } else {\n resolvedHeaders = this.headers;\n }\n }\n\n // Create WebSocket with headers (Node.js ws library supports this)\n this.ws = new NodeWebSocket(this.serverUrl, {\n headers: resolvedHeaders,\n }) as unknown as WebSocket;\n\n return new Promise<void>((resolve, reject) => {\n const onOpen = () => {\n logger.info(\"WebSocket connected\", { serverUrl: this.serverUrl });\n for (const handler of this.openHandlers) {\n handler();\n }\n resolve();\n };\n\n const onError = (err?: Error) => {\n logger.error(\"WebSocket connection failed\", {\n serverUrl: this.serverUrl,\n error: err?.message,\n });\n reject(err || new Error(\"WebSocket connection failed\"));\n };\n\n (this.ws as any).once(\"open\", onOpen);\n (this.ws as any).once(\"error\", onError);\n\n // Setup permanent handlers\n (this.ws as any).on(\"message\", (data: Buffer) => {\n const message = data.toString();\n for (const handler of this.messageHandlers) {\n handler(message);\n }\n });\n\n (this.ws as any).on(\"close\", () => {\n logger.warn(\"WebSocket closed\");\n for (const handler of this.closeHandlers) {\n handler();\n }\n });\n\n (this.ws as any).on(\"error\", (err: Error) => {\n logger.error(\"WebSocket error\", { error: err.message });\n for (const handler of this.errorHandlers) {\n handler(err);\n }\n });\n });\n }\n\n send(message: string): void {\n if (!this.ws || this.ws.readyState !== 1) {\n throw new Error(\"WebSocket is not open\");\n }\n this.ws.send(message);\n }\n\n onMessage(handler: (message: string) => void): Unsubscribe {\n this.messageHandlers.add(handler);\n return () => {\n this.messageHandlers.delete(handler);\n };\n }\n\n onOpen(handler: () => void): Unsubscribe {\n this.openHandlers.add(handler);\n return () => {\n this.openHandlers.delete(handler);\n };\n }\n\n onClose(handler: () => void): Unsubscribe {\n this.closeHandlers.add(handler);\n return () => {\n this.closeHandlers.delete(handler);\n };\n }\n\n onError(handler: (error: Error) => void): Unsubscribe {\n this.errorHandlers.add(handler);\n return () => {\n this.errorHandlers.delete(handler);\n };\n }\n\n close(): void {\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n\n dispose(): void {\n this.close();\n this.messageHandlers.clear();\n this.openHandlers.clear();\n this.closeHandlers.clear();\n this.errorHandlers.clear();\n }\n}\n\n/**\n * Browser WebSocket Client with auto-reconnect\n */\nexport class BrowserWebSocketClient implements ChannelClient {\n private ws: WebSocket | null = null;\n private serverUrl: string;\n private options: ChannelClientOptions;\n private messageHandlers = new Set<(message: string) => void>();\n private openHandlers = new Set<() => void>();\n private closeHandlers = new Set<() => void>();\n private errorHandlers = new Set<(error: Error) => void>();\n private hasConnectedBefore = false; // Track if this is a reconnection\n\n constructor(options: ChannelClientOptions) {\n if (!isBrowser) {\n throw new Error(\"BrowserWebSocketClient can only be used in browser environment\");\n }\n\n this.serverUrl = options.serverUrl;\n this.options = {\n autoReconnect: true,\n minReconnectionDelay: 1000,\n maxReconnectionDelay: 10000,\n maxRetries: Infinity,\n connectionTimeout: 4000,\n debug: false,\n ...options,\n };\n }\n\n get readyState(): \"connecting\" | \"open\" | \"closing\" | \"closed\" {\n if (!this.ws) return \"closed\";\n const state = this.ws.readyState;\n if (state === 0) return \"connecting\";\n if (state === 1) return \"open\";\n if (state === 2) return \"closing\";\n return \"closed\";\n }\n\n async connect(): Promise<void> {\n if (this.ws) {\n throw new Error(\"Already connected or connecting\");\n }\n\n // Resolve headers before creating WebSocket (if any)\n let resolvedHeaders: Record<string, string> | undefined;\n if (this.options.headers) {\n if (typeof this.options.headers === \"function\") {\n resolvedHeaders = await Promise.resolve(this.options.headers());\n } else {\n resolvedHeaders = this.options.headers;\n }\n }\n\n if (this.options.autoReconnect) {\n // Use reconnecting-websocket for auto-reconnect\n const ReconnectingWebSocket = (await import(\"reconnecting-websocket\")).default;\n this.ws = new ReconnectingWebSocket(this.serverUrl, [], {\n maxReconnectionDelay: this.options.maxReconnectionDelay,\n minReconnectionDelay: this.options.minReconnectionDelay,\n reconnectionDelayGrowFactor: 1.3,\n connectionTimeout: this.options.connectionTimeout,\n maxRetries: this.options.maxRetries,\n debug: this.options.debug,\n });\n } else {\n // Use native WebSocket\n this.ws = new WebSocket(this.serverUrl);\n }\n\n return new Promise<void>((resolve, reject) => {\n const onOpen = async () => {\n if (this.hasConnectedBefore) {\n logger.info(\"WebSocket reconnected successfully\", { serverUrl: this.serverUrl });\n } else {\n logger.info(\"WebSocket connected\", { serverUrl: this.serverUrl });\n this.hasConnectedBefore = true;\n }\n\n // Browser WebSocket API doesn't support custom headers in handshake\n // Send authentication message as first message instead\n if (resolvedHeaders && Object.keys(resolvedHeaders).length > 0) {\n try {\n const authMessage = JSON.stringify({\n type: \"auth\",\n headers: resolvedHeaders,\n });\n this.ws!.send(authMessage);\n logger.info(\"Sent authentication message to server\");\n } catch (error) {\n logger.error(\"Failed to send authentication message\", { error });\n }\n }\n\n for (const handler of this.openHandlers) {\n handler();\n }\n resolve();\n };\n\n const onError = (_event: Event) => {\n logger.error(\"WebSocket connection failed\", { serverUrl: this.serverUrl });\n const error = new Error(\"WebSocket connection failed\");\n for (const handler of this.errorHandlers) {\n handler(error);\n }\n reject(error);\n };\n\n this.ws!.addEventListener(\"open\", onOpen as any, { once: true });\n this.ws!.addEventListener(\"error\", onError as any, { once: true });\n\n // Setup permanent handlers\n this.ws!.addEventListener(\"message\", ((event: any) => {\n const message = event.data;\n for (const handler of this.messageHandlers) {\n handler(message);\n }\n }) as any);\n\n this.ws!.addEventListener(\"close\", (() => {\n logger.info(\"WebSocket closed, attempting to reconnect...\");\n for (const handler of this.closeHandlers) {\n handler();\n }\n }) as any);\n\n this.ws!.addEventListener(\"error\", ((_event: Event) => {\n logger.error(\"WebSocket error\");\n const error = new Error(\"WebSocket error\");\n for (const handler of this.errorHandlers) {\n handler(error);\n }\n }) as any);\n });\n }\n\n send(message: string): void {\n if (!this.ws || this.ws.readyState !== 1) {\n throw new Error(\"WebSocket is not open\");\n }\n this.ws.send(message);\n }\n\n onMessage(handler: (message: string) => void): Unsubscribe {\n this.messageHandlers.add(handler);\n return () => {\n this.messageHandlers.delete(handler);\n };\n }\n\n onOpen(handler: () => void): Unsubscribe {\n this.openHandlers.add(handler);\n return () => {\n this.openHandlers.delete(handler);\n };\n }\n\n onClose(handler: () => void): Unsubscribe {\n this.closeHandlers.add(handler);\n return () => {\n this.closeHandlers.delete(handler);\n };\n }\n\n onError(handler: (error: Error) => void): Unsubscribe {\n this.errorHandlers.add(handler);\n return () => {\n this.errorHandlers.delete(handler);\n };\n }\n\n close(): void {\n if (this.ws) {\n this.ws.close();\n this.ws = null;\n }\n }\n\n dispose(): void {\n this.close();\n this.messageHandlers.clear();\n this.openHandlers.clear();\n this.closeHandlers.clear();\n this.errorHandlers.clear();\n }\n}\n\n/**\n * Factory function to create the appropriate WebSocket client\n */\nexport async function createWebSocketClient(options: ChannelClientOptions): Promise<ChannelClient> {\n if (isBrowser) {\n const client = new BrowserWebSocketClient(options);\n await client.connect();\n return client;\n } else {\n const client = new WebSocketClient(options);\n await client.connect();\n return client;\n }\n}\n"
|
|
7
7
|
],
|
|
8
|
-
"mappings": "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",
|
|
9
|
-
"debugId": "
|
|
8
|
+
"mappings": "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",
|
|
9
|
+
"debugId": "5F5AFA22D2A5976F64756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentxjs/network",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0",
|
|
4
4
|
"description": "Network layer abstraction for AgentX platform - WebSocket client/server with heartbeat and auto-reconnect",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agentx",
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"clean": "rm -rf dist"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@agentxjs/common": "^1.
|
|
42
|
-
"@agentxjs/types": "^1.
|
|
41
|
+
"@agentxjs/common": "^1.7.0",
|
|
42
|
+
"@agentxjs/types": "^1.7.0",
|
|
43
43
|
"reconnecting-websocket": "^4.4.0",
|
|
44
44
|
"ws": "^8.18.0"
|
|
45
45
|
},
|