mirror of
https://github.com/DeBrosOfficial/network-ts-sdk.git
synced 2026-03-17 02:33:00 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3108ccd908 |
@ -1,6 +1,6 @@
|
||||
{
|
||||
"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",
|
||||
"type": "module",
|
||||
"main": "./dist/index.js",
|
||||
|
||||
@ -41,12 +41,12 @@ export interface IWebSocketClient {
|
||||
/**
|
||||
* Register close handler
|
||||
*/
|
||||
onClose(handler: () => void): void;
|
||||
onClose(handler: (code: number, reason: string) => void): void;
|
||||
|
||||
/**
|
||||
* Unregister close handler
|
||||
*/
|
||||
offClose(handler: () => void): void;
|
||||
offClose(handler: (code: number, reason: string) => void): void;
|
||||
|
||||
/**
|
||||
* Check if WebSocket is connected
|
||||
|
||||
@ -16,7 +16,7 @@ export interface WSClientConfig {
|
||||
|
||||
export type WSMessageHandler = (data: string) => void;
|
||||
export type WSErrorHandler = (error: Error) => void;
|
||||
export type WSCloseHandler = () => void;
|
||||
export type WSCloseHandler = (code: number, reason: string) => void;
|
||||
export type WSOpenHandler = () => void;
|
||||
|
||||
/**
|
||||
@ -102,7 +102,12 @@ export class WSClient {
|
||||
this.ws.addEventListener("error", (event: Event) => {
|
||||
console.error("[WSClient] WebSocket error:", event);
|
||||
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
|
||||
if (this.onNetworkError) {
|
||||
@ -118,10 +123,13 @@ export class WSClient {
|
||||
reject(error);
|
||||
});
|
||||
|
||||
this.ws.addEventListener("close", () => {
|
||||
this.ws.addEventListener("close", (event: Event) => {
|
||||
clearTimeout(timeout);
|
||||
console.log("[WSClient] Connection closed");
|
||||
this.closeHandlers.forEach((handler) => handler());
|
||||
const closeEvent = event as CloseEvent;
|
||||
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) {
|
||||
reject(error);
|
||||
@ -206,7 +214,7 @@ export class WSClient {
|
||||
*/
|
||||
send(data: string): void {
|
||||
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);
|
||||
}
|
||||
|
||||
@ -176,7 +176,7 @@ export class Subscription {
|
||||
private isClosed = false;
|
||||
private wsMessageHandler: ((data: string) => 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>;
|
||||
|
||||
constructor(
|
||||
@ -271,8 +271,8 @@ export class Subscription {
|
||||
this.wsClient.onError(this.wsErrorHandler);
|
||||
|
||||
// Register close handler
|
||||
this.wsCloseHandler = () => {
|
||||
this.closeHandlers.forEach((handler) => handler());
|
||||
this.wsCloseHandler = (code: number, reason: string) => {
|
||||
this.closeHandlers.forEach((handler) => handler(code, reason));
|
||||
};
|
||||
this.wsClient.onClose(this.wsCloseHandler);
|
||||
}
|
||||
|
||||
@ -42,5 +42,5 @@ export interface SubscribeOptions {
|
||||
|
||||
export type MessageHandler = (message: PubSubMessage) => 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