jsonrpc2-ws
Advanced tools
Comparing version 1.0.0-beta20 to 1.0.0-beta21
@@ -29,14 +29,14 @@ /// <reference types="ws" /> | ||
export default interface Client { | ||
on(event: "connecting", listener: (this: Client) => void): any; | ||
on(event: "connected", listener: (this: Client) => void): any; | ||
on(event: "disconnect", listener: (this: Client, code: number, reason: any) => void): any; | ||
on(event: "reconnecting", listener: (this: Client, attemps: number) => void): any; | ||
on(event: "reconnect_failed", listener: (this: Client) => void): any; | ||
on(event: "reconnect_error", listener: (this: Client, err: any) => void): any; | ||
on(event: "reconnected", listener: (this: Client, attemps: number) => void): any; | ||
on(event: "error_response", listener: (this: Client, response: ErrorResponse) => void): any; | ||
on(event: "notification_error", listener: (this: Client, error: RPCError) => void): any; | ||
on(event: "connecting", listener: (this: Client) => void): this; | ||
on(event: "connected", listener: (this: Client) => void): this; | ||
on(event: "disconnect", listener: (this: Client, code: number, reason: any) => void): this; | ||
on(event: "reconnecting", listener: (this: Client, attemps: number) => void): this; | ||
on(event: "reconnect_failed", listener: (this: Client) => void): this; | ||
on(event: "reconnect_error", listener: (this: Client, err: any) => void): this; | ||
on(event: "reconnected", listener: (this: Client, attemps: number) => void): this; | ||
on(event: "error_response", listener: (this: Client, response: ErrorResponse) => void): this; | ||
on(event: "notification_error", listener: (this: Client, error: RPCError) => void): this; | ||
on(event: "close", cb: (this: Client) => void): this; | ||
on(event: "error", listener: (this: Client, error: any) => void): any; | ||
on(event: "buffer_sending_error", listener: (this: Client, error: any) => void): any; | ||
on(event: "error", listener: (this: Client, error: any) => void): this; | ||
on(event: "buffer_sending_error", listener: (this: Client, error: any) => void): this; | ||
} | ||
@@ -43,0 +43,0 @@ /** |
@@ -65,17 +65,44 @@ "use strict"; | ||
const ws = this._ws = new WebSocket(this.uri, this.config.protocols, this.config); | ||
ws.on("error", error => this.emit("error", error)); | ||
ws.on("close", () => this.emit("close")); | ||
ws.on("close", (code, reason) => this.emit("disconnect", code, reason)); | ||
ws.on("close", () => this._ws = null); | ||
if (ws.addEventListener) { | ||
ws.addEventListener("error", error => this.emit("error", error)); | ||
ws.addEventListener("close", ({ code, reason }) => { | ||
this.emit("close"); | ||
this.emit("disconnect", code, reason); | ||
this._ws = null; | ||
}); | ||
ws.addEventListener("message", ({ data }) => this._messageHandler.handleMessage(this, data).catch(e => this.emit("error", e))); | ||
} | ||
else { | ||
ws.on("error", error => this.emit("error", error)); | ||
ws.on("close", (code, reason) => { | ||
this.emit("close"); | ||
this.emit("disconnect", code, reason); | ||
this._ws = null; | ||
}); | ||
ws.on("message", data => this._messageHandler.handleMessage(this, data).catch(e => this.emit("error", e))); | ||
} | ||
if (this.config.reconnection) { | ||
this._skipReconnection = false; | ||
ws.on("close", () => this.reconnect()); | ||
if (ws.addEventListener) { | ||
ws.addEventListener("close", () => this.reconnect()); | ||
} | ||
else { | ||
ws.on("close", () => this.reconnect()); | ||
} | ||
} | ||
ws.on("message", data => this._messageHandler.handleMessage(this, data).catch(e => this.emit("error", e))); | ||
await new Promise((resolve, reject) => { | ||
ws.once("open", () => { | ||
ws.off("error", reject); | ||
resolve(); | ||
}); | ||
ws.once("error", reject); | ||
if (ws.addEventListener) { | ||
ws.addEventListener("open", () => { | ||
ws.removeEventListener("error", reject); | ||
resolve(); | ||
}, { once: true }); | ||
ws.addEventListener("error", reject, { once: true }); | ||
} | ||
else { | ||
ws.once("open", () => { | ||
ws.off("error", reject); | ||
resolve(); | ||
}); | ||
ws.once("error", reject); | ||
} | ||
}); | ||
@@ -108,3 +135,10 @@ await this._sendBufferedMessages(); | ||
if (ws.readyState === WebSocket.OPEN || ws.readyState === WebSocket.CONNECTING) { | ||
promise = new Promise(resolve => ws.once("close", () => resolve())); | ||
promise = new Promise(resolve => { | ||
if (ws.addEventListener) { | ||
ws.addEventListener("close", () => resolve(), { once: true }); | ||
} | ||
else { | ||
ws.once("close", () => resolve()); | ||
} | ||
}); | ||
ws.close(); | ||
@@ -111,0 +145,0 @@ } |
{ | ||
"name": "jsonrpc2-ws", | ||
"version": "1.0.0-beta20", | ||
"version": "1.0.0-beta21", | ||
"description": "Simple, Fast, Robust Implementation of JSON-RPC 2.0 over WebSocket for Node.js w/ TypeScript", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
73188
1367
0