@push-rpc/core
Advanced tools
Comparing version 1.6.2 to 1.6.3
@@ -123,4 +123,6 @@ "use strict"; | ||
timer = setTimeout(function () { | ||
if (!connected_1) | ||
if (!connected_1) { | ||
socket_1.disconnect(); | ||
reject(new Error("Connection timeout")); | ||
} | ||
}, this.opts.connectionTimeout); | ||
@@ -127,0 +129,0 @@ if (timer.unref) { |
{ | ||
"name": "@push-rpc/core", | ||
"version": "1.6.2", | ||
"version": "1.6.3", | ||
"main": "dist/index.js", | ||
@@ -21,3 +21,3 @@ "types": "dist/index.d.ts", | ||
}, | ||
"gitHead": "b9fbe8dfcc2461679e7cfb0ee0268a1082777f50" | ||
"gitHead": "2fedd40f524d4802b070aa879e05cb9b43222890" | ||
} |
@@ -93,3 +93,6 @@ import {RpcSession} from "./RpcSession" | ||
const timer = setTimeout(() => { | ||
if (!connected) reject(new Error("Connection timeout")) | ||
if (!connected) { | ||
socket.disconnect() | ||
reject(new Error("Connection timeout")) | ||
} | ||
}, this.opts.connectionTimeout) | ||
@@ -96,0 +99,0 @@ |
import {assert} from "chai" | ||
import {createNodeWebsocket} from "../../websocket/src" | ||
import {createRpcClient, RpcClient} from "../src" | ||
import {createRpcClient, RpcClient, Socket} from "../src" | ||
import {createTestClient, startTestServer, TEST_PORT} from "./testUtils" | ||
@@ -252,2 +252,121 @@ | ||
}) | ||
it("out of band client connect/disconnect", async () => { | ||
let connectionsHistory = [] | ||
const rpcServer = await startTestServer({ | ||
test: { | ||
async call() {}, | ||
}, | ||
}) | ||
const client = await createRpcClient( | ||
1, | ||
async () => createNodeWebsocket(`ws://localhost:${TEST_PORT}`), | ||
{ | ||
reconnect: true, | ||
reconnectDelay: 0, | ||
listeners: { | ||
connected() { | ||
connectionsHistory.push("C") | ||
}, | ||
disconnected() { | ||
connectionsHistory.push("D") | ||
}, | ||
messageOut() {}, | ||
messageIn() {}, | ||
unsubscribed() {}, | ||
subscribed() {}, | ||
}, | ||
} | ||
) | ||
await rpcServer.disconnectClient(rpcServer.getConnectedIds()[0]) | ||
await new Promise(r => setTimeout(r, 100)) | ||
await client.disconnect() | ||
await new Promise(r => setTimeout(r, 100)) | ||
assert.deepEqual(connectionsHistory, ["C", "D", "C", "D"]) | ||
}) | ||
it("connection timeout generates correct events`", async () => { | ||
let connectionsHistory = [] | ||
let connection = 0 | ||
const connectionTimeout = 200 | ||
const rpcServer = await startTestServer( | ||
{ | ||
test: { | ||
async call() {}, | ||
}, | ||
}, | ||
{ | ||
createConnectionContext: async () => ({ | ||
remoteId: "client", | ||
}), | ||
} | ||
) | ||
const client = await createRpcClient( | ||
1, | ||
async () => { | ||
const socket = createNodeWebsocket(`ws://localhost:${TEST_PORT}`) | ||
connection++ | ||
// console.log("Create socket, connection " + connection) | ||
if (connection == 2) { | ||
// simulate connection timeout | ||
const realOnOpen = socket.onOpen | ||
let timer = null | ||
socket.onOpen = h => { | ||
realOnOpen.call(socket, () => { | ||
timer = setTimeout(h, connectionTimeout + 200) | ||
}) | ||
} | ||
const realDisconnect = socket.disconnect | ||
socket.disconnect = () => { | ||
clearTimeout(timer) | ||
realDisconnect.call(socket) | ||
} | ||
} | ||
return socket | ||
}, | ||
{ | ||
reconnect: true, | ||
reconnectDelay: 0, | ||
errorDelayMaxDuration: 0, | ||
connectionTimeout, | ||
listeners: { | ||
connected() { | ||
connectionsHistory.push("C") | ||
}, | ||
disconnected() { | ||
connectionsHistory.push("D") | ||
}, | ||
messageOut() {}, | ||
messageIn() {}, | ||
unsubscribed() {}, | ||
subscribed() {}, | ||
}, | ||
} | ||
) | ||
await rpcServer.disconnectClient(rpcServer.getConnectedIds()[0]) | ||
await new Promise(r => setTimeout(r, 1500)) | ||
// console.log(connectionsHistory) | ||
assert.deepEqual(connectionsHistory, ["C", "D", "C"]) | ||
await client.disconnect() | ||
}) | ||
}) |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
184103
4873