@push-rpc/core
Advanced tools
Comparing version 1.1.4 to 1.1.5
@@ -43,9 +43,13 @@ "use strict"; | ||
var client = { | ||
disconnectedMark: false, | ||
remote: session.remote, | ||
disconnect: function () { return session.disconnect(); }, | ||
disconnect: function () { | ||
client.disconnectedMark = true; | ||
session.disconnect(); | ||
}, | ||
}; | ||
return (opts.reconnect ? startConnectionLoop : connect)(session, createSocket, opts.listeners).then(function () { return client; }); | ||
return (opts.reconnect ? startConnectionLoop : connect)(session, createSocket, opts.listeners, client).then(function () { return client; }); | ||
} | ||
exports.createRpcClient = createRpcClient; | ||
function startConnectionLoop(session, createSocket, listeners) { | ||
function startConnectionLoop(session, createSocket, listeners, client) { | ||
return new Promise(function (resolve) { | ||
@@ -62,8 +66,8 @@ var onFirstConnection = resolve; | ||
onFirstConnection = function () { }; | ||
}, errorDelay); | ||
}, errorDelay, client); | ||
}); | ||
} | ||
function connectionLoop(session, createSocket, listeners, resolve, errorDelay) { | ||
function connectionLoop(session, createSocket, listeners, resolve, errorDelay, client) { | ||
function reconnect() { | ||
var timer = setTimeout(function () { return connectionLoop(session, createSocket, listeners, resolve, errorDelay); }, errorDelay.value); | ||
var timer = setTimeout(function () { return connectionLoop(session, createSocket, listeners, resolve, errorDelay, client); }, errorDelay.value); | ||
// 2nd and further reconnects are with random delays | ||
@@ -77,3 +81,5 @@ errorDelay.value = Math.round(Math.random() * 15 * 1000); | ||
var code = _a.code, reason = _a.reason; | ||
reconnect(); | ||
if (!client.disconnectedMark) { | ||
reconnect(); | ||
} | ||
listeners.disconnected({ code: code, reason: reason }); | ||
@@ -84,3 +90,5 @@ } }); | ||
.catch(function () { | ||
reconnect(); | ||
if (!client.disconnectedMark) { | ||
reconnect(); | ||
} | ||
}); | ||
@@ -87,0 +95,0 @@ } |
{ | ||
"name": "@push-rpc/core", | ||
"version": "1.1.4", | ||
"version": "1.1.5", | ||
"main": "dist/index.js", | ||
@@ -20,3 +20,3 @@ "types": "dist/index.d.ts", | ||
}, | ||
"gitHead": "f963e89a0d037be1a76a07e73cbd1836dca21d53" | ||
"gitHead": "f6d61eaba29157055081e1d323c3a5297092e74c" | ||
} |
@@ -80,4 +80,8 @@ import {RpcSession} from "./RpcSession" | ||
const client = { | ||
disconnectedMark: false, | ||
remote: session.remote, | ||
disconnect: () => session.disconnect(), | ||
disconnect: () => { | ||
client.disconnectedMark = true | ||
session.disconnect() | ||
}, | ||
} | ||
@@ -88,3 +92,4 @@ | ||
createSocket, | ||
opts.listeners | ||
opts.listeners, | ||
client | ||
).then(() => client) | ||
@@ -96,3 +101,4 @@ } | ||
createSocket: () => Socket, | ||
listeners: RpcClientListeners | ||
listeners: RpcClientListeners, | ||
client: {disconnectedMark: boolean} | ||
): Promise<void> { | ||
@@ -120,3 +126,4 @@ return new Promise(resolve => { | ||
}, | ||
errorDelay | ||
errorDelay, | ||
client, | ||
) | ||
@@ -131,7 +138,8 @@ }) | ||
resolve, | ||
errorDelay | ||
errorDelay, | ||
client: {disconnectedMark: boolean} | ||
): void { | ||
function reconnect() { | ||
const timer = setTimeout( | ||
() => connectionLoop(session, createSocket, listeners, resolve, errorDelay), | ||
() => connectionLoop(session, createSocket, listeners, resolve, errorDelay, client), | ||
errorDelay.value | ||
@@ -151,3 +159,6 @@ ) | ||
disconnected: ({code, reason}) => { | ||
reconnect() | ||
if (!client.disconnectedMark) { | ||
reconnect() | ||
} | ||
listeners.disconnected({code, reason}) | ||
@@ -160,3 +171,5 @@ }, | ||
.catch(() => { | ||
reconnect() | ||
if (!client.disconnectedMark) { | ||
reconnect() | ||
} | ||
}) | ||
@@ -163,0 +176,0 @@ } |
import {assert} from "chai" | ||
import {createTestClient, startTestServer} from "./testUtils" | ||
import {createNodeWebsocket} from "../../websocket/src" | ||
import {createRpcClient} from "../src" | ||
import {createTestClient, startTestServer, TEST_PORT} from "./testUtils" | ||
@@ -30,2 +32,14 @@ describe("connection", () => { | ||
}).timeout(5000) | ||
}) | ||
it("disconnect will stop reconnection loop", async () => { | ||
const rpcClient = await createRpcClient( | ||
1, | ||
() => createNodeWebsocket(`wss://echo.websocket.org`), | ||
{ | ||
reconnect: true | ||
} | ||
) | ||
rpcClient.disconnect() | ||
}) | ||
}) |
@@ -34,2 +34,4 @@ import {createRpcClient, createRpcServer, RpcClientOptions, RpcServer} from "../src" | ||
wss.close(resolve) | ||
} else { | ||
resolve() | ||
} | ||
@@ -36,0 +38,0 @@ }) |
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
134927
3604