mirror of
https://github.com/DeBrosOfficial/network-ts-sdk.git
synced 2026-03-17 10:36:56 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3108ccd908 |
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@debros/network-ts-sdk",
|
"name": "@debros/network-ts-sdk",
|
||||||
"version": "0.6.1",
|
"version": "0.6.2",
|
||||||
"description": "TypeScript SDK for DeBros Network Gateway - Database, PubSub, Cache, Storage, and more",
|
"description": "TypeScript SDK for DeBros Network Gateway - Database, PubSub, Cache, Storage, and more",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"main": "./dist/index.js",
|
"main": "./dist/index.js",
|
||||||
|
|||||||
@ -41,12 +41,12 @@ export interface IWebSocketClient {
|
|||||||
/**
|
/**
|
||||||
* Register close handler
|
* Register close handler
|
||||||
*/
|
*/
|
||||||
onClose(handler: () => void): void;
|
onClose(handler: (code: number, reason: string) => void): void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Unregister close handler
|
* Unregister close handler
|
||||||
*/
|
*/
|
||||||
offClose(handler: () => void): void;
|
offClose(handler: (code: number, reason: string) => void): void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check if WebSocket is connected
|
* Check if WebSocket is connected
|
||||||
|
|||||||
@ -16,7 +16,7 @@ export interface WSClientConfig {
|
|||||||
|
|
||||||
export type WSMessageHandler = (data: string) => void;
|
export type WSMessageHandler = (data: string) => void;
|
||||||
export type WSErrorHandler = (error: Error) => void;
|
export type WSErrorHandler = (error: Error) => void;
|
||||||
export type WSCloseHandler = () => void;
|
export type WSCloseHandler = (code: number, reason: string) => void;
|
||||||
export type WSOpenHandler = () => void;
|
export type WSOpenHandler = () => void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -102,7 +102,12 @@ export class WSClient {
|
|||||||
this.ws.addEventListener("error", (event: Event) => {
|
this.ws.addEventListener("error", (event: Event) => {
|
||||||
console.error("[WSClient] WebSocket error:", event);
|
console.error("[WSClient] WebSocket error:", event);
|
||||||
clearTimeout(timeout);
|
clearTimeout(timeout);
|
||||||
const error = new SDKError("WebSocket error", 500, "WS_ERROR", event);
|
// Extract useful details from the event — raw Event objects don't serialize
|
||||||
|
const details: Record<string, any> = { type: event.type };
|
||||||
|
if ("message" in event) {
|
||||||
|
details.message = (event as ErrorEvent).message;
|
||||||
|
}
|
||||||
|
const error = new SDKError("WebSocket error", 0, "WS_ERROR", details);
|
||||||
|
|
||||||
// Call the network error callback if configured
|
// Call the network error callback if configured
|
||||||
if (this.onNetworkError) {
|
if (this.onNetworkError) {
|
||||||
@ -118,10 +123,13 @@ export class WSClient {
|
|||||||
reject(error);
|
reject(error);
|
||||||
});
|
});
|
||||||
|
|
||||||
this.ws.addEventListener("close", () => {
|
this.ws.addEventListener("close", (event: Event) => {
|
||||||
clearTimeout(timeout);
|
clearTimeout(timeout);
|
||||||
console.log("[WSClient] Connection closed");
|
const closeEvent = event as CloseEvent;
|
||||||
this.closeHandlers.forEach((handler) => handler());
|
const code = closeEvent.code ?? 1006;
|
||||||
|
const reason = closeEvent.reason ?? "";
|
||||||
|
console.log(`[WSClient] Connection closed (code: ${code}, reason: ${reason || "none"})`);
|
||||||
|
this.closeHandlers.forEach((handler) => handler(code, reason));
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
reject(error);
|
reject(error);
|
||||||
@ -206,7 +214,7 @@ export class WSClient {
|
|||||||
*/
|
*/
|
||||||
send(data: string): void {
|
send(data: string): void {
|
||||||
if (this.ws?.readyState !== WebSocket.OPEN) {
|
if (this.ws?.readyState !== WebSocket.OPEN) {
|
||||||
throw new SDKError("WebSocket is not connected", 500, "WS_NOT_CONNECTED");
|
throw new SDKError("WebSocket is not connected", 0, "WS_NOT_CONNECTED");
|
||||||
}
|
}
|
||||||
this.ws.send(data);
|
this.ws.send(data);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -176,7 +176,7 @@ export class Subscription {
|
|||||||
private isClosed = false;
|
private isClosed = false;
|
||||||
private wsMessageHandler: ((data: string) => void) | null = null;
|
private wsMessageHandler: ((data: string) => void) | null = null;
|
||||||
private wsErrorHandler: ((error: Error) => void) | null = null;
|
private wsErrorHandler: ((error: Error) => void) | null = null;
|
||||||
private wsCloseHandler: (() => void) | null = null;
|
private wsCloseHandler: ((code: number, reason: string) => void) | null = null;
|
||||||
private getPresenceFn: () => Promise<PresenceResponse>;
|
private getPresenceFn: () => Promise<PresenceResponse>;
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
@ -271,8 +271,8 @@ export class Subscription {
|
|||||||
this.wsClient.onError(this.wsErrorHandler);
|
this.wsClient.onError(this.wsErrorHandler);
|
||||||
|
|
||||||
// Register close handler
|
// Register close handler
|
||||||
this.wsCloseHandler = () => {
|
this.wsCloseHandler = (code: number, reason: string) => {
|
||||||
this.closeHandlers.forEach((handler) => handler());
|
this.closeHandlers.forEach((handler) => handler(code, reason));
|
||||||
};
|
};
|
||||||
this.wsClient.onClose(this.wsCloseHandler);
|
this.wsClient.onClose(this.wsCloseHandler);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -42,5 +42,5 @@ export interface SubscribeOptions {
|
|||||||
|
|
||||||
export type MessageHandler = (message: PubSubMessage) => void;
|
export type MessageHandler = (message: PubSubMessage) => void;
|
||||||
export type ErrorHandler = (error: Error) => void;
|
export type ErrorHandler = (error: Error) => void;
|
||||||
export type CloseHandler = () => void;
|
export type CloseHandler = (code: number, reason: string) => void;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user