@streamr/dht 0.0.1-tatum.6 → 0.0.1-tatum.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/connection/ConnectionLockHandler.d.ts +1 -1
- package/dist/src/connection/ConnectionLockHandler.js.map +1 -1
- package/dist/src/connection/ConnectionLockRpcRemote.d.ts +10 -0
- package/dist/src/connection/{RemoteConnectionLocker.js → ConnectionLockRpcRemote.js} +21 -35
- package/dist/src/connection/ConnectionLockRpcRemote.js.map +1 -0
- package/dist/src/connection/ConnectionManager.d.ts +17 -41
- package/dist/src/connection/ConnectionManager.js +148 -212
- package/dist/src/connection/ConnectionManager.js.map +1 -1
- package/dist/src/connection/ConnectivityChecker.js +16 -13
- package/dist/src/connection/ConnectivityChecker.js.map +1 -1
- package/dist/src/connection/ConnectorFacade.d.ts +49 -0
- package/dist/src/connection/ConnectorFacade.js +83 -0
- package/dist/src/connection/ConnectorFacade.js.map +1 -0
- package/dist/src/connection/Handshaker.d.ts +1 -2
- package/dist/src/connection/Handshaker.js +1 -4
- package/dist/src/connection/Handshaker.js.map +1 -1
- package/dist/src/connection/ManagedConnection.d.ts +2 -6
- package/dist/src/connection/ManagedConnection.js +27 -36
- package/dist/src/connection/ManagedConnection.js.map +1 -1
- package/dist/src/connection/ManagedWebRtcConnection.d.ts +1 -1
- package/dist/src/connection/ManagedWebRtcConnection.js +2 -2
- package/dist/src/connection/ManagedWebRtcConnection.js.map +1 -1
- package/dist/src/connection/Simulator/Simulator.d.ts +0 -2
- package/dist/src/connection/Simulator/Simulator.js +0 -5
- package/dist/src/connection/Simulator/Simulator.js.map +1 -1
- package/dist/src/connection/Simulator/SimulatorConnection.js +16 -13
- package/dist/src/connection/Simulator/SimulatorConnection.js.map +1 -1
- package/dist/src/connection/Simulator/SimulatorConnector.d.ts +2 -3
- package/dist/src/connection/Simulator/SimulatorConnector.js +12 -14
- package/dist/src/connection/Simulator/SimulatorConnector.js.map +1 -1
- package/dist/src/connection/Simulator/SimulatorTransport.js +6 -1
- package/dist/src/connection/Simulator/SimulatorTransport.js.map +1 -1
- package/dist/src/connection/WebRTC/NodeWebRtcConnection.d.ts +3 -1
- package/dist/src/connection/WebRTC/NodeWebRtcConnection.js +12 -12
- package/dist/src/connection/WebRTC/NodeWebRtcConnection.js.map +1 -1
- package/dist/src/connection/WebRTC/{WebRtcConnector.d.ts → WebRtcConnectorRpcLocal.d.ts} +13 -13
- package/dist/src/connection/WebRTC/{WebRtcConnector.js → WebRtcConnectorRpcLocal.js} +46 -38
- package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.js.map +1 -0
- package/dist/src/connection/WebRTC/WebRtcConnectorRpcRemote.d.ts +11 -0
- package/dist/src/connection/WebRTC/WebRtcConnectorRpcRemote.js +55 -0
- package/dist/src/connection/WebRTC/WebRtcConnectorRpcRemote.js.map +1 -0
- package/dist/src/connection/WebRTC/iceServerAsString.d.ts +1 -1
- package/dist/src/connection/WebSocket/{WebSocketConnector.d.ts → WebSocketConnectorRpcLocal.d.ts} +21 -11
- package/dist/src/connection/WebSocket/{WebSocketConnector.js → WebSocketConnectorRpcLocal.js} +80 -59
- package/dist/src/connection/WebSocket/WebSocketConnectorRpcLocal.js.map +1 -0
- package/dist/src/connection/WebSocket/WebSocketConnectorRpcRemote.d.ts +8 -0
- package/dist/src/connection/WebSocket/{RemoteWebSocketConnector.js → WebSocketConnectorRpcRemote.js} +12 -16
- package/dist/src/connection/WebSocket/WebSocketConnectorRpcRemote.js.map +1 -0
- package/dist/src/connection/WebSocket/WebSocketServer.d.ts +11 -1
- package/dist/src/connection/WebSocket/WebSocketServer.js +15 -10
- package/dist/src/connection/WebSocket/WebSocketServer.js.map +1 -1
- package/dist/src/dht/DhtNode.d.ts +18 -55
- package/dist/src/dht/DhtNode.js +122 -145
- package/dist/src/dht/DhtNode.js.map +1 -1
- package/dist/src/dht/{RemoteExternalApi.d.ts → ExternalApiRpcRemote.d.ts} +2 -2
- package/dist/src/dht/{RemoteExternalApi.js → ExternalApiRpcRemote.js} +5 -6
- package/dist/src/dht/ExternalApiRpcRemote.js.map +1 -0
- package/dist/src/dht/{DhtPeer.d.ts → RemoteDhtNode.d.ts} +2 -3
- package/dist/src/dht/{DhtPeer.js → RemoteDhtNode.js} +21 -19
- package/dist/src/dht/RemoteDhtNode.js.map +1 -0
- package/dist/src/dht/contact/ContactList.d.ts +0 -1
- package/dist/src/dht/contact/ContactList.js +0 -3
- package/dist/src/dht/contact/ContactList.js.map +1 -1
- package/dist/src/dht/contact/RandomContactList.d.ts +0 -1
- package/dist/src/dht/contact/RandomContactList.js +0 -3
- package/dist/src/dht/contact/RandomContactList.js.map +1 -1
- package/dist/src/dht/contact/SortedContactList.d.ts +0 -3
- package/dist/src/dht/contact/SortedContactList.js +0 -9
- package/dist/src/dht/contact/SortedContactList.js.map +1 -1
- package/dist/src/dht/discovery/DiscoverySession.d.ts +5 -7
- package/dist/src/dht/discovery/DiscoverySession.js +9 -10
- package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
- package/dist/src/dht/discovery/PeerDiscovery.d.ts +12 -11
- package/dist/src/dht/discovery/PeerDiscovery.js +33 -37
- package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
- package/dist/src/dht/find/RecursiveFindSession.d.ts +9 -10
- package/dist/src/dht/find/RecursiveFindSession.js +13 -13
- package/dist/src/dht/find/RecursiveFindSession.js.map +1 -1
- package/dist/src/dht/find/RecursiveFinder.d.ts +9 -11
- package/dist/src/dht/find/RecursiveFinder.js +35 -36
- package/dist/src/dht/find/RecursiveFinder.js.map +1 -1
- package/dist/src/dht/find/RemoteRecursiveFindSession.d.ts +1 -1
- package/dist/src/dht/find/RemoteRecursiveFindSession.js +4 -4
- package/dist/src/dht/find/RemoteRecursiveFindSession.js.map +1 -1
- package/dist/src/dht/registerExternalApiRpcMethods.d.ts +1 -1
- package/dist/src/dht/registerExternalApiRpcMethods.js +4 -3
- package/dist/src/dht/registerExternalApiRpcMethods.js.map +1 -1
- package/dist/src/dht/routing/DuplicateDetector.d.ts +1 -2
- package/dist/src/dht/routing/DuplicateDetector.js +2 -7
- package/dist/src/dht/routing/DuplicateDetector.js.map +1 -1
- package/dist/src/dht/routing/Router.d.ts +12 -15
- package/dist/src/dht/routing/Router.js +30 -33
- package/dist/src/dht/routing/Router.js.map +1 -1
- package/dist/src/dht/routing/{RemoteRouter.d.ts → RouterRpcRemote.d.ts} +2 -2
- package/dist/src/dht/routing/{RemoteRouter.js → RouterRpcRemote.js} +5 -5
- package/dist/src/dht/routing/RouterRpcRemote.js.map +1 -0
- package/dist/src/dht/routing/RoutingSession.d.ts +3 -4
- package/dist/src/dht/routing/RoutingSession.js +6 -5
- package/dist/src/dht/routing/RoutingSession.js.map +1 -1
- package/dist/src/dht/store/{DataStore.d.ts → StoreRpcLocal.d.ts} +6 -6
- package/dist/src/dht/store/{DataStore.js → StoreRpcLocal.js} +34 -34
- package/dist/src/dht/store/StoreRpcLocal.js.map +1 -0
- package/dist/src/dht/store/{RemoteStore.d.ts → StoreRpcRemote.d.ts} +2 -2
- package/dist/src/dht/store/{RemoteStore.js → StoreRpcRemote.js} +4 -4
- package/dist/src/dht/store/StoreRpcRemote.js.map +1 -0
- package/dist/src/exports.d.ts +2 -8
- package/dist/src/exports.js +2 -14
- package/dist/src/exports.js.map +1 -1
- package/dist/src/helpers/PeerID.d.ts +0 -1
- package/dist/src/helpers/PeerID.js +0 -6
- package/dist/src/helpers/PeerID.js.map +1 -1
- package/dist/src/helpers/browser/isBrowserEnvironment.d.ts +1 -0
- package/dist/src/helpers/browser/isBrowserEnvironment.js +6 -0
- package/dist/src/helpers/browser/isBrowserEnvironment.js.map +1 -0
- package/dist/src/helpers/browser/isBrowserEnvironment_override.d.ts +1 -0
- package/dist/src/helpers/browser/isBrowserEnvironment_override.js +7 -0
- package/dist/src/helpers/browser/isBrowserEnvironment_override.js.map +1 -0
- package/dist/src/helpers/kademliaId.d.ts +1 -0
- package/dist/src/helpers/kademliaId.js +14 -0
- package/dist/src/helpers/kademliaId.js.map +1 -0
- package/dist/src/helpers/peerIdFromPeerDescriptor.d.ts +1 -1
- package/dist/src/helpers/peerIdFromPeerDescriptor.js +3 -3
- package/dist/src/helpers/peerIdFromPeerDescriptor.js.map +1 -1
- package/dist/src/helpers/protoClasses.js +2 -2
- package/dist/src/helpers/protoClasses.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +29 -29
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +39 -39
- package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +49 -162
- package/dist/src/proto/packages/dht/protos/DhtRpc.js +47 -88
- package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
- package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +15 -15
- package/dist/src/transport/RoutingRpcCommunicator.js +1 -0
- package/dist/src/transport/RoutingRpcCommunicator.js.map +1 -1
- package/package.json +10 -9
- package/protos/DhtRpc.proto +30 -60
- package/src/connection/ConnectionLockHandler.ts +1 -1
- package/src/connection/ConnectionLockRpcRemote.ts +62 -0
- package/src/connection/ConnectionManager.ts +178 -274
- package/src/connection/ConnectivityChecker.ts +15 -12
- package/src/connection/ConnectorFacade.ts +140 -0
- package/src/connection/Handshaker.ts +0 -5
- package/src/connection/ManagedConnection.ts +26 -40
- package/src/connection/ManagedWebRtcConnection.ts +0 -2
- package/src/connection/Simulator/Simulator.ts +0 -7
- package/src/connection/Simulator/SimulatorConnection.ts +16 -13
- package/src/connection/Simulator/SimulatorConnector.ts +13 -19
- package/src/connection/Simulator/SimulatorTransport.ts +6 -1
- package/src/connection/WebRTC/NodeWebRtcConnection.ts +15 -14
- package/src/connection/WebRTC/{WebRtcConnector.ts → WebRtcConnectorRpcLocal.ts} +68 -56
- package/src/connection/WebRTC/WebRtcConnectorRpcRemote.ts +71 -0
- package/src/connection/WebRTC/iceServerAsString.ts +1 -1
- package/src/connection/WebSocket/{WebSocketConnector.ts → WebSocketConnectorRpcLocal.ts} +102 -79
- package/src/connection/WebSocket/WebSocketConnectorRpcRemote.ts +45 -0
- package/src/connection/WebSocket/WebSocketServer.ts +26 -8
- package/src/dht/DhtNode.ts +176 -203
- package/src/dht/{RemoteExternalApi.ts → ExternalApiRpcRemote.ts} +3 -4
- package/src/dht/{DhtPeer.ts → RemoteDhtNode.ts} +11 -9
- package/src/dht/contact/ContactList.ts +0 -4
- package/src/dht/contact/RandomContactList.ts +0 -4
- package/src/dht/contact/SortedContactList.ts +0 -12
- package/src/dht/discovery/DiscoverySession.ts +20 -23
- package/src/dht/discovery/PeerDiscovery.ts +47 -45
- package/src/dht/find/RecursiveFindSession.ts +21 -22
- package/src/dht/find/RecursiveFinder.ts +45 -49
- package/src/dht/find/RemoteRecursiveFindSession.ts +6 -6
- package/src/dht/registerExternalApiRpcMethods.ts +8 -5
- package/src/dht/routing/DuplicateDetector.ts +3 -10
- package/src/dht/routing/Router.ts +39 -45
- package/src/dht/routing/{RemoteRouter.ts → RouterRpcRemote.ts} +4 -4
- package/src/dht/routing/RoutingSession.ts +15 -15
- package/src/dht/store/{DataStore.ts → StoreRpcLocal.ts} +42 -42
- package/src/dht/store/{RemoteStore.ts → StoreRpcRemote.ts} +2 -2
- package/src/exports.ts +2 -8
- package/src/helpers/PeerID.ts +0 -7
- package/src/helpers/browser/isBrowserEnvironment.ts +1 -0
- package/src/helpers/browser/isBrowserEnvironment_override.ts +3 -0
- package/src/helpers/kademliaId.ts +8 -0
- package/src/helpers/peerIdFromPeerDescriptor.ts +1 -1
- package/src/helpers/protoClasses.ts +4 -4
- package/src/proto/packages/dht/protos/DhtRpc.client.ts +54 -54
- package/src/proto/packages/dht/protos/DhtRpc.server.ts +15 -15
- package/src/proto/packages/dht/protos/DhtRpc.ts +77 -216
- package/src/transport/RoutingRpcCommunicator.ts +1 -0
- package/test/benchmark/KademliaCorrectness.test.ts +4 -2
- package/test/benchmark/RecursiveFind.test.ts +6 -6
- package/test/end-to-end/Layer0-Layer1.test.ts +9 -9
- package/test/end-to-end/Layer0WebRTC-Layer1.test.ts +5 -5
- package/test/end-to-end/Layer0WebRTC.test.ts +5 -6
- package/test/end-to-end/Layer1-Scale-WebRTC.test.ts +13 -8
- package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +15 -10
- package/test/end-to-end/WebSocketConnectionRequest.test.ts +5 -5
- package/test/integration/ConnectionLocking.test.ts +32 -26
- package/test/integration/ConnectionManager.test.ts +90 -93
- package/test/integration/DhtJoinPeerDiscovery.test.ts +53 -0
- package/test/integration/DhtRpc.test.ts +4 -6
- package/test/integration/Layer1-scale.test.ts +8 -8
- package/test/integration/MigrateData.test.ts +9 -9
- package/test/integration/Mock-Layer1-Layer0.test.ts +1 -2
- package/test/integration/RecursiveFind.test.ts +5 -5
- package/test/integration/{DhtPeer.test.ts → RemoteDhtNode.test.ts} +11 -12
- package/test/integration/RouteMessage.test.ts +7 -9
- package/test/integration/{RemoteRouter.test.ts → RouterRpcRemote.test.ts} +13 -14
- package/test/integration/RpcErrors.test.ts +25 -10
- package/test/integration/ScaleDownDht.test.ts +8 -8
- package/test/integration/SimultaneousConnections.test.ts +35 -36
- package/test/integration/Store.test.ts +8 -9
- package/test/integration/StoreAndDelete.test.ts +11 -11
- package/test/integration/StoreOnDhtWithTwoNodes.test.ts +7 -7
- package/test/integration/{RemoteStore.test.ts → StoreRpcRemote.test.ts} +17 -18
- package/test/integration/WebRtcConnectionManagement.test.ts +26 -19
- package/test/integration/WebRtcConnectorRpc.test.ts +17 -32
- package/test/integration/WebSocket.test.ts +4 -2
- package/test/integration/WebSocketConnectionManagement.test.ts +30 -17
- package/test/integration/WebSocketConnectorRpc.test.ts +10 -15
- package/test/unit/DuplicateDetector.test.ts +3 -4
- package/test/unit/LocalDataStore.test.ts +6 -8
- package/test/unit/RandomContactList.test.ts +1 -1
- package/test/unit/RecursiveFinder.test.ts +13 -18
- package/test/unit/Router.test.ts +18 -21
- package/test/unit/WebSocketConnectorRpcLocal.test.ts +64 -0
- package/test/unit/WebSocketServer.test.ts +24 -12
- package/test/unit/{webrtcReplaceInternalIpWithExternalIp.ts → webrtcReplaceInternalIpWithExternalIp.test.ts} +1 -1
- package/test/utils/mock/RecursiveFinder.ts +2 -2
- package/test/utils/mock/Router.ts +9 -11
- package/test/utils/mock/Transport.ts +2 -2
- package/test/utils/utils.ts +55 -74
- package/dist/src/connection/RemoteConnectionLocker.d.ts +0 -13
- package/dist/src/connection/RemoteConnectionLocker.js.map +0 -1
- package/dist/src/connection/WebRTC/RemoteWebrtcConnector.d.ts +0 -12
- package/dist/src/connection/WebRTC/RemoteWebrtcConnector.js +0 -74
- package/dist/src/connection/WebRTC/RemoteWebrtcConnector.js.map +0 -1
- package/dist/src/connection/WebRTC/WebRtcConnector.js.map +0 -1
- package/dist/src/connection/WebSocket/RemoteWebSocketConnector.d.ts +0 -9
- package/dist/src/connection/WebSocket/RemoteWebSocketConnector.js.map +0 -1
- package/dist/src/connection/WebSocket/WebSocketConnector.js.map +0 -1
- package/dist/src/dht/DhtPeer.js.map +0 -1
- package/dist/src/dht/RemoteExternalApi.js.map +0 -1
- package/dist/src/dht/routing/RemoteRouter.js.map +0 -1
- package/dist/src/dht/store/DataStore.js.map +0 -1
- package/dist/src/dht/store/RemoteStore.js.map +0 -1
- package/dist/src/helpers/browser/isBrowser.d.ts +0 -1
- package/dist/src/helpers/browser/isBrowser.js +0 -6
- package/dist/src/helpers/browser/isBrowser.js.map +0 -1
- package/dist/src/helpers/browser/isNodeJS.d.ts +0 -1
- package/dist/src/helpers/browser/isNodeJS.js +0 -6
- package/dist/src/helpers/browser/isNodeJS.js.map +0 -1
- package/src/connection/RemoteConnectionLocker.ts +0 -84
- package/src/connection/WebRTC/RemoteWebrtcConnector.ts +0 -93
- package/src/connection/WebSocket/RemoteWebSocketConnector.ts +0 -49
- package/src/helpers/browser/isBrowser.ts +0 -1
- package/src/helpers/browser/isNodeJS.ts +0 -1
- package/test/integration/DhtWithMockConnectionLatencies.test.ts +0 -46
- package/test/integration/DhtWithMockConnections.test.ts +0 -46
- package/test/integration/DhtWithRealConnectionLatencies.test.ts +0 -47
package/dist/src/connection/WebSocket/{WebSocketConnector.js → WebSocketConnectorRpcLocal.js}
RENAMED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.WebSocketConnectorRpcLocal = exports.connectivityMethodToWebSocketUrl = void 0;
|
|
4
4
|
const ClientWebSocket_1 = require("./ClientWebSocket");
|
|
5
5
|
const IConnection_1 = require("../IConnection");
|
|
6
6
|
const ListeningRpcCommunicator_1 = require("../../transport/ListeningRpcCommunicator");
|
|
7
|
-
const
|
|
7
|
+
const WebSocketConnectorRpcRemote_1 = require("./WebSocketConnectorRpcRemote");
|
|
8
8
|
const DhtRpc_1 = require("../../proto/packages/dht/protos/DhtRpc");
|
|
9
9
|
const DhtRpc_client_1 = require("../../proto/packages/dht/protos/DhtRpc.client");
|
|
10
10
|
const utils_1 = require("@streamr/utils");
|
|
@@ -16,14 +16,19 @@ const proto_rpc_1 = require("@streamr/proto-rpc");
|
|
|
16
16
|
const Handshaker_1 = require("../Handshaker");
|
|
17
17
|
const peerIdFromPeerDescriptor_1 = require("../../helpers/peerIdFromPeerDescriptor");
|
|
18
18
|
const lodash_1 = require("lodash");
|
|
19
|
+
const AddressTools_1 = require("../../helpers/AddressTools");
|
|
19
20
|
const logger = new utils_1.Logger(module);
|
|
20
21
|
const connectivityMethodToWebSocketUrl = (ws) => {
|
|
21
22
|
return (ws.tls ? 'wss://' : 'ws://') + ws.host + ':' + ws.port;
|
|
22
23
|
};
|
|
23
24
|
exports.connectivityMethodToWebSocketUrl = connectivityMethodToWebSocketUrl;
|
|
25
|
+
const canOpenConnectionFromBrowser = (websocketServer) => {
|
|
26
|
+
const hasPrivateAddress = ((websocketServer.host === 'localhost') || (0, AddressTools_1.isPrivateIPv4)(websocketServer.host));
|
|
27
|
+
return websocketServer.tls || hasPrivateAddress;
|
|
28
|
+
};
|
|
24
29
|
const ENTRY_POINT_CONNECTION_ATTEMPTS = 5;
|
|
25
|
-
class
|
|
26
|
-
constructor(
|
|
30
|
+
class WebSocketConnectorRpcLocal {
|
|
31
|
+
constructor(config) {
|
|
27
32
|
this.ongoingConnectRequests = new Map();
|
|
28
33
|
this.connectingConnections = new Map();
|
|
29
34
|
this.destroyed = false;
|
|
@@ -31,14 +36,14 @@ class WebSocketConnector {
|
|
|
31
36
|
const peerId = (0, peerIdFromPeerDescriptor_1.peerIdFromPeerDescriptor)(peerDescriptor);
|
|
32
37
|
if (this.ongoingConnectRequests.has(peerId.toKey())) {
|
|
33
38
|
const ongoingConnectReguest = this.ongoingConnectRequests.get(peerId.toKey());
|
|
34
|
-
ongoingConnectReguest.attachImplementation(serverWebSocket
|
|
39
|
+
ongoingConnectReguest.attachImplementation(serverWebSocket);
|
|
35
40
|
ongoingConnectReguest.acceptHandshake();
|
|
36
41
|
this.ongoingConnectRequests.delete(peerId.toKey());
|
|
37
42
|
}
|
|
38
43
|
else {
|
|
39
|
-
const managedConnection = new ManagedConnection_1.ManagedConnection(this.ownPeerDescriptor,
|
|
44
|
+
const managedConnection = new ManagedConnection_1.ManagedConnection(this.ownPeerDescriptor, IConnection_1.ConnectionType.WEBSOCKET_SERVER, undefined, serverWebSocket);
|
|
40
45
|
managedConnection.setPeerDescriptor(peerDescriptor);
|
|
41
|
-
if (this.
|
|
46
|
+
if (this.onIncomingConnection(managedConnection)) {
|
|
42
47
|
managedConnection.acceptHandshake();
|
|
43
48
|
}
|
|
44
49
|
else {
|
|
@@ -47,21 +52,23 @@ class WebSocketConnector {
|
|
|
47
52
|
}
|
|
48
53
|
}
|
|
49
54
|
};
|
|
50
|
-
this.
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
this.
|
|
56
|
-
this.
|
|
57
|
-
this.
|
|
58
|
-
this.
|
|
55
|
+
this.webSocketServer = config.portRange ? new WebSocketServer_1.WebSocketServer({
|
|
56
|
+
portRange: config.portRange,
|
|
57
|
+
tlsCertificate: config.tlsCertificate,
|
|
58
|
+
maxMessageSize: config.maxMessageSize
|
|
59
|
+
}) : undefined;
|
|
60
|
+
this.onIncomingConnection = config.onIncomingConnection;
|
|
61
|
+
this.host = config.host;
|
|
62
|
+
this.entrypoints = config.entrypoints;
|
|
63
|
+
this.tlsCertificate = config.tlsCertificate;
|
|
64
|
+
this.canConnectFunction = config.canConnect.bind(this);
|
|
65
|
+
this.rpcCommunicator = new ListeningRpcCommunicator_1.ListeningRpcCommunicator(WebSocketConnectorRpcLocal.WEBSOCKET_CONNECTOR_SERVICE_ID, config.transport, {
|
|
59
66
|
rpcRequestTimeout: 15000
|
|
60
67
|
});
|
|
61
68
|
this.rpcCommunicator.registerRpcMethod(DhtRpc_1.WebSocketConnectionRequest, DhtRpc_1.WebSocketConnectionResponse, 'requestConnection', (req, context) => this.requestConnection(req, context));
|
|
62
69
|
}
|
|
63
70
|
attachHandshaker(connection) {
|
|
64
|
-
const handshaker = new Handshaker_1.Handshaker(this.ownPeerDescriptor,
|
|
71
|
+
const handshaker = new Handshaker_1.Handshaker(this.ownPeerDescriptor, connection);
|
|
65
72
|
handshaker.once('handshakeRequest', (peerDescriptor) => {
|
|
66
73
|
this.onServerSocketHandshakeRequest(peerDescriptor, connection);
|
|
67
74
|
});
|
|
@@ -74,11 +81,11 @@ class WebSocketConnector {
|
|
|
74
81
|
serverSocket.resourceURL.query) {
|
|
75
82
|
const query = serverSocket.resourceURL.query;
|
|
76
83
|
if (query.connectivityRequest) {
|
|
77
|
-
logger.trace('Received connectivity request connection');
|
|
84
|
+
logger.trace('Received connectivity request connection from ' + serverSocket.getRemoteAddress());
|
|
78
85
|
this.connectivityChecker.listenToIncomingConnectivityRequests(serverSocket);
|
|
79
86
|
}
|
|
80
87
|
else if (query.connectivityProbe) {
|
|
81
|
-
logger.trace('Received connectivity probe connection');
|
|
88
|
+
logger.trace('Received connectivity probe connection from ' + serverSocket.getRemoteAddress());
|
|
82
89
|
}
|
|
83
90
|
else {
|
|
84
91
|
this.attachHandshaker(connection);
|
|
@@ -88,12 +95,12 @@ class WebSocketConnector {
|
|
|
88
95
|
this.attachHandshaker(connection);
|
|
89
96
|
}
|
|
90
97
|
});
|
|
91
|
-
const port = await this.webSocketServer.start(
|
|
98
|
+
const port = await this.webSocketServer.start();
|
|
92
99
|
this.selectedPort = port;
|
|
93
100
|
this.connectivityChecker = new ConnectivityChecker_1.ConnectivityChecker(this.selectedPort, this.tlsCertificate !== undefined, this.host);
|
|
94
101
|
}
|
|
95
102
|
}
|
|
96
|
-
async checkConnectivity(
|
|
103
|
+
async checkConnectivity() {
|
|
97
104
|
// TODO: this could throw if the server is not running
|
|
98
105
|
const noServerConnectivityResponse = {
|
|
99
106
|
openInternet: false,
|
|
@@ -103,38 +110,51 @@ class WebSocketConnector {
|
|
|
103
110
|
if (this.destroyed) {
|
|
104
111
|
return noServerConnectivityResponse;
|
|
105
112
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
if (!this.entrypoints || this.entrypoints.length < 1) {
|
|
113
|
-
// return connectivity info given in config
|
|
114
|
-
const preconfiguredConnectivityResponse = {
|
|
115
|
-
openInternet: true,
|
|
116
|
-
host: this.host,
|
|
117
|
-
natType: ConnectionManager_1.NatType.OPEN_INTERNET,
|
|
118
|
-
websocket: { host: this.host, port: this.selectedPort, tls: this.tlsCertificate !== undefined }
|
|
119
|
-
};
|
|
120
|
-
return preconfiguredConnectivityResponse;
|
|
113
|
+
for (const reattempt of (0, lodash_1.range)(ENTRY_POINT_CONNECTION_ATTEMPTS)) {
|
|
114
|
+
const entryPoint = (0, lodash_1.sample)(this.entrypoints);
|
|
115
|
+
try {
|
|
116
|
+
if (!this.webSocketServer) {
|
|
117
|
+
// If no websocket server, return openInternet: false
|
|
118
|
+
return noServerConnectivityResponse;
|
|
121
119
|
}
|
|
122
120
|
else {
|
|
123
|
-
|
|
124
|
-
|
|
121
|
+
if (!this.entrypoints || this.entrypoints.length < 1) {
|
|
122
|
+
// return connectivity info given in config
|
|
123
|
+
const preconfiguredConnectivityResponse = {
|
|
124
|
+
openInternet: true,
|
|
125
|
+
host: this.host,
|
|
126
|
+
natType: ConnectionManager_1.NatType.OPEN_INTERNET,
|
|
127
|
+
websocket: { host: this.host, port: this.selectedPort, tls: this.tlsCertificate !== undefined }
|
|
128
|
+
};
|
|
129
|
+
return preconfiguredConnectivityResponse;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
// Do real connectivity checking
|
|
133
|
+
return await this.connectivityChecker.sendConnectivityRequest(entryPoint);
|
|
134
|
+
}
|
|
125
135
|
}
|
|
126
136
|
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
else {
|
|
135
|
-
throw err;
|
|
137
|
+
catch (err) {
|
|
138
|
+
if (reattempt < ENTRY_POINT_CONNECTION_ATTEMPTS) {
|
|
139
|
+
const error = `Failed to connect to entrypoint with id ${(0, utils_1.binaryToHex)(entryPoint.kademliaId)} `
|
|
140
|
+
+ `and URL ${(0, exports.connectivityMethodToWebSocketUrl)(entryPoint.websocket)}`;
|
|
141
|
+
logger.error(error, { error: err });
|
|
142
|
+
await (0, utils_1.wait)(2000);
|
|
143
|
+
}
|
|
136
144
|
}
|
|
137
145
|
}
|
|
146
|
+
throw Error(`Failed to connect to the entrypoints after ${ENTRY_POINT_CONNECTION_ATTEMPTS} attempts`);
|
|
147
|
+
}
|
|
148
|
+
isPossibleToFormConnection(targetPeerDescriptor) {
|
|
149
|
+
if (this.ownPeerDescriptor.websocket !== undefined) {
|
|
150
|
+
return (targetPeerDescriptor.type !== DhtRpc_1.NodeType.BROWSER) || canOpenConnectionFromBrowser(this.ownPeerDescriptor.websocket);
|
|
151
|
+
}
|
|
152
|
+
else if (targetPeerDescriptor.websocket !== undefined) {
|
|
153
|
+
return (this.ownPeerDescriptor.type !== DhtRpc_1.NodeType.BROWSER) || canOpenConnectionFromBrowser(targetPeerDescriptor.websocket);
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
return false;
|
|
157
|
+
}
|
|
138
158
|
}
|
|
139
159
|
connect(targetPeerDescriptor) {
|
|
140
160
|
const peerKey = (0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(targetPeerDescriptor);
|
|
@@ -148,7 +168,7 @@ class WebSocketConnector {
|
|
|
148
168
|
else {
|
|
149
169
|
const socket = new ClientWebSocket_1.ClientWebSocket();
|
|
150
170
|
const url = (0, exports.connectivityMethodToWebSocketUrl)(targetPeerDescriptor.websocket);
|
|
151
|
-
const managedConnection = new ManagedConnection_1.ManagedConnection(this.ownPeerDescriptor,
|
|
171
|
+
const managedConnection = new ManagedConnection_1.ManagedConnection(this.ownPeerDescriptor, IConnection_1.ConnectionType.WEBSOCKET_CLIENT, socket, undefined);
|
|
152
172
|
managedConnection.setPeerDescriptor(targetPeerDescriptor);
|
|
153
173
|
this.connectingConnections.set((0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(targetPeerDescriptor), managedConnection);
|
|
154
174
|
const delFunc = () => {
|
|
@@ -166,10 +186,10 @@ class WebSocketConnector {
|
|
|
166
186
|
}
|
|
167
187
|
requestConnectionFromPeer(ownPeerDescriptor, targetPeerDescriptor) {
|
|
168
188
|
setImmediate(() => {
|
|
169
|
-
const remoteConnector = new
|
|
170
|
-
remoteConnector.requestConnection(ownPeerDescriptor
|
|
189
|
+
const remoteConnector = new WebSocketConnectorRpcRemote_1.WebSocketConnectorRpcRemote(ownPeerDescriptor, targetPeerDescriptor, (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.WebSocketConnectorRpcClient(this.rpcCommunicator.getRpcClientTransport())));
|
|
190
|
+
remoteConnector.requestConnection(ownPeerDescriptor.websocket.host, ownPeerDescriptor.websocket.port);
|
|
171
191
|
});
|
|
172
|
-
const managedConnection = new ManagedConnection_1.ManagedConnection(this.ownPeerDescriptor,
|
|
192
|
+
const managedConnection = new ManagedConnection_1.ManagedConnection(this.ownPeerDescriptor, IConnection_1.ConnectionType.WEBSOCKET_SERVER);
|
|
173
193
|
managedConnection.on('disconnected', () => this.ongoingConnectRequests.delete((0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(targetPeerDescriptor)));
|
|
174
194
|
managedConnection.setPeerDescriptor(targetPeerDescriptor);
|
|
175
195
|
this.ongoingConnectRequests.set((0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(targetPeerDescriptor), managedConnection);
|
|
@@ -188,15 +208,16 @@ class WebSocketConnector {
|
|
|
188
208
|
this.connectivityChecker?.destroy();
|
|
189
209
|
await this.webSocketServer?.stop();
|
|
190
210
|
}
|
|
191
|
-
//
|
|
192
|
-
async requestConnection(request,
|
|
193
|
-
|
|
211
|
+
// IWebSocketConnectorRpc implementation
|
|
212
|
+
async requestConnection(request, context) {
|
|
213
|
+
const senderPeerDescriptor = context.incomingSourceDescriptor;
|
|
214
|
+
if (!this.destroyed && this.canConnectFunction(senderPeerDescriptor, request.ip, request.port)) {
|
|
194
215
|
setImmediate(() => {
|
|
195
216
|
if (this.destroyed) {
|
|
196
217
|
return;
|
|
197
218
|
}
|
|
198
|
-
const connection = this.connect(
|
|
199
|
-
this.
|
|
219
|
+
const connection = this.connect(senderPeerDescriptor);
|
|
220
|
+
this.onIncomingConnection(connection);
|
|
200
221
|
});
|
|
201
222
|
const res = {
|
|
202
223
|
accepted: true
|
|
@@ -208,6 +229,6 @@ class WebSocketConnector {
|
|
|
208
229
|
};
|
|
209
230
|
}
|
|
210
231
|
}
|
|
211
|
-
exports.
|
|
212
|
-
|
|
213
|
-
//# sourceMappingURL=
|
|
232
|
+
exports.WebSocketConnectorRpcLocal = WebSocketConnectorRpcLocal;
|
|
233
|
+
WebSocketConnectorRpcLocal.WEBSOCKET_CONNECTOR_SERVICE_ID = 'system/websocket-connector';
|
|
234
|
+
//# sourceMappingURL=WebSocketConnectorRpcLocal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebSocketConnectorRpcLocal.js","sourceRoot":"","sources":["../../../../src/connection/WebSocket/WebSocketConnectorRpcLocal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { PeerDescriptor } from '../../proto/packages/dht/protos/DhtRpc';
|
|
2
|
+
import { IWebSocketConnectorRpcClient } from '../../proto/packages/dht/protos/DhtRpc.client';
|
|
3
|
+
import { ProtoRpcClient } from '@streamr/proto-rpc';
|
|
4
|
+
import { Remote } from '../../dht/contact/Remote';
|
|
5
|
+
export declare class WebSocketConnectorRpcRemote extends Remote<IWebSocketConnectorRpcClient> {
|
|
6
|
+
constructor(localPeerDescriptor: PeerDescriptor, remotePeerDescriptor: PeerDescriptor, client: ProtoRpcClient<IWebSocketConnectorRpcClient>);
|
|
7
|
+
requestConnection(ip: string, port: number): Promise<boolean>;
|
|
8
|
+
}
|
package/dist/src/connection/WebSocket/{RemoteWebSocketConnector.js → WebSocketConnectorRpcRemote.js}
RENAMED
|
@@ -23,29 +23,25 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
26
|
+
exports.WebSocketConnectorRpcRemote = void 0;
|
|
27
27
|
const utils_1 = require("@streamr/utils");
|
|
28
28
|
const Err = __importStar(require("../../helpers/errors"));
|
|
29
|
+
const peerIdFromPeerDescriptor_1 = require("../../helpers/peerIdFromPeerDescriptor");
|
|
30
|
+
const Remote_1 = require("../../dht/contact/Remote");
|
|
29
31
|
const logger = new utils_1.Logger(module);
|
|
30
|
-
class
|
|
31
|
-
constructor(
|
|
32
|
-
|
|
33
|
-
this.client = client;
|
|
32
|
+
class WebSocketConnectorRpcRemote extends Remote_1.Remote {
|
|
33
|
+
constructor(localPeerDescriptor, remotePeerDescriptor, client) {
|
|
34
|
+
super(localPeerDescriptor, remotePeerDescriptor, 'DUMMY', client);
|
|
34
35
|
}
|
|
35
|
-
async requestConnection(
|
|
36
|
-
logger.trace(`Requesting WebSocket connection from ${this.
|
|
36
|
+
async requestConnection(ip, port) {
|
|
37
|
+
logger.trace(`Requesting WebSocket connection from ${(0, peerIdFromPeerDescriptor_1.keyFromPeerDescriptor)(this.getLocalPeerDescriptor())}`);
|
|
37
38
|
const request = {
|
|
38
|
-
target: this.peerDescriptor,
|
|
39
|
-
requester: sourceDescriptor,
|
|
40
39
|
ip,
|
|
41
40
|
port
|
|
42
41
|
};
|
|
43
|
-
const options =
|
|
44
|
-
sourceDescriptor: sourceDescriptor,
|
|
45
|
-
targetDescriptor: this.peerDescriptor
|
|
46
|
-
};
|
|
42
|
+
const options = this.formDhtRpcOptions();
|
|
47
43
|
try {
|
|
48
|
-
const res = await this.
|
|
44
|
+
const res = await this.getClient().requestConnection(request, options);
|
|
49
45
|
if (res.reason) {
|
|
50
46
|
logger.debug('WebSocketConnectionRequest Rejected', {
|
|
51
47
|
stack: new Err.WebSocketConnectionRequestRejected(res.reason).stack
|
|
@@ -59,5 +55,5 @@ class RemoteWebSocketConnector {
|
|
|
59
55
|
}
|
|
60
56
|
}
|
|
61
57
|
}
|
|
62
|
-
exports.
|
|
63
|
-
//# sourceMappingURL=
|
|
58
|
+
exports.WebSocketConnectorRpcRemote = WebSocketConnectorRpcRemote;
|
|
59
|
+
//# sourceMappingURL=WebSocketConnectorRpcRemote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebSocketConnectorRpcRemote.js","sourceRoot":"","sources":["../../../../src/connection/WebSocket/WebSocketConnectorRpcRemote.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,0CAAuC;AACvC,0DAA2C;AAE3C,qFAA8E;AAC9E,qDAAiD;AAEjD,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,CAAA;AAEjC,MAAa,2BAA4B,SAAQ,eAAoC;IAEjF,YACI,mBAAmC,EACnC,oBAAoC,EACpC,MAAoD;QAEpD,KAAK,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;IACrE,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,EAAU,EAAE,IAAY;QAC5C,MAAM,CAAC,KAAK,CAAC,wCAAwC,IAAA,gDAAqB,EAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC,EAAE,CAAC,CAAA;QAC5G,MAAM,OAAO,GAA+B;YACxC,EAAE;YACF,IAAI;SACP,CAAA;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;QACxC,IAAI;YACA,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAEtE,IAAI,GAAG,CAAC,MAAM,EAAE;gBACZ,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE;oBAChD,KAAK,EAAE,IAAI,GAAG,CAAC,kCAAkC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK;iBACtE,CAAC,CAAA;aACL;YACD,OAAO,GAAG,CAAC,QAAQ,CAAA;SACtB;QAAC,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,kCAAkC,CAAC,qCAAqC,EAAE,GAAG,CAAC,CAAC,KAAM,CAAC,CAAA;YAC3G,OAAO,KAAK,CAAA;SACf;IACL,CAAC;CACJ;AA/BD,kEA+BC"}
|
|
@@ -1,12 +1,22 @@
|
|
|
1
1
|
import EventEmitter from 'eventemitter3';
|
|
2
2
|
import { ConnectionSourceEvents } from '../IConnectionSource';
|
|
3
3
|
import { PortRange, TlsCertificate } from '../ConnectionManager';
|
|
4
|
+
interface WebSocketServerConfig {
|
|
5
|
+
portRange: PortRange;
|
|
6
|
+
tlsCertificate?: TlsCertificate;
|
|
7
|
+
maxMessageSize?: number;
|
|
8
|
+
}
|
|
4
9
|
export declare class WebSocketServer extends EventEmitter<ConnectionSourceEvents> {
|
|
5
10
|
private httpServer?;
|
|
6
11
|
private wsServer?;
|
|
7
12
|
private readonly abortController;
|
|
8
|
-
|
|
13
|
+
private readonly portRange;
|
|
14
|
+
private readonly tlsCertificate?;
|
|
15
|
+
private readonly maxMessageSize;
|
|
16
|
+
constructor(config: WebSocketServerConfig);
|
|
17
|
+
start(): Promise<number>;
|
|
9
18
|
private startServer;
|
|
10
19
|
stop(): Promise<void>;
|
|
11
20
|
private createWsServer;
|
|
12
21
|
}
|
|
22
|
+
export {};
|
|
@@ -15,15 +15,18 @@ const lodash_1 = require("lodash");
|
|
|
15
15
|
const fs_1 = __importDefault(require("fs"));
|
|
16
16
|
const logger = new utils_1.Logger(module);
|
|
17
17
|
class WebSocketServer extends eventemitter3_1.default {
|
|
18
|
-
constructor() {
|
|
19
|
-
super(
|
|
18
|
+
constructor(config) {
|
|
19
|
+
super();
|
|
20
20
|
this.abortController = new AbortController();
|
|
21
|
+
this.portRange = config.portRange;
|
|
22
|
+
this.tlsCertificate = config.tlsCertificate;
|
|
23
|
+
this.maxMessageSize = config.maxMessageSize ?? 1048576;
|
|
21
24
|
}
|
|
22
|
-
async start(
|
|
23
|
-
const ports = (0, lodash_1.range)(portRange.min, portRange.max + 1);
|
|
25
|
+
async start() {
|
|
26
|
+
const ports = (0, lodash_1.range)(this.portRange.min, this.portRange.max + 1);
|
|
24
27
|
for (const port of ports) {
|
|
25
28
|
try {
|
|
26
|
-
await (0, utils_1.asAbortable)(this.startServer(port, tlsCertificate), this.abortController.signal);
|
|
29
|
+
await (0, utils_1.asAbortable)(this.startServer(port, this.tlsCertificate), this.abortController.signal);
|
|
27
30
|
return port;
|
|
28
31
|
}
|
|
29
32
|
catch (err) {
|
|
@@ -35,7 +38,7 @@ class WebSocketServer extends eventemitter3_1.default {
|
|
|
35
38
|
}
|
|
36
39
|
}
|
|
37
40
|
}
|
|
38
|
-
throw new errors_1.WebSocketServerStartError(`Failed to start WebSocket server on any port in range: ${portRange.min}-${portRange.min}`);
|
|
41
|
+
throw new errors_1.WebSocketServerStartError(`Failed to start WebSocket server on any port in range: ${this.portRange.min}-${this.portRange.min}`);
|
|
39
42
|
}
|
|
40
43
|
startServer(port, tlsCertificate) {
|
|
41
44
|
const requestListener = (request, response) => {
|
|
@@ -51,12 +54,12 @@ class WebSocketServer extends eventemitter3_1.default {
|
|
|
51
54
|
}, requestListener)
|
|
52
55
|
:
|
|
53
56
|
(0, http_1.createServer)(requestListener);
|
|
54
|
-
function originIsAllowed(
|
|
57
|
+
function originIsAllowed() {
|
|
55
58
|
return true;
|
|
56
59
|
}
|
|
57
60
|
this.wsServer = this.createWsServer(this.httpServer);
|
|
58
61
|
this.wsServer.on('request', (request) => {
|
|
59
|
-
if (!originIsAllowed(
|
|
62
|
+
if (!originIsAllowed()) {
|
|
60
63
|
// Make sure we only accept requests from an allowed origin
|
|
61
64
|
request.reject();
|
|
62
65
|
logger.trace('IConnection from origin ' + request.origin + ' rejected.');
|
|
@@ -97,13 +100,15 @@ class WebSocketServer extends eventemitter3_1.default {
|
|
|
97
100
|
if (typeof NodeJsWsServer !== 'undefined') {
|
|
98
101
|
return new NodeJsWsServer({
|
|
99
102
|
httpServer,
|
|
100
|
-
autoAcceptConnections: false
|
|
103
|
+
autoAcceptConnections: false,
|
|
104
|
+
maxReceivedMessageSize: this.maxMessageSize
|
|
101
105
|
});
|
|
102
106
|
}
|
|
103
107
|
else {
|
|
104
108
|
return this.wsServer = new websocket_1.server({
|
|
105
109
|
httpServer,
|
|
106
|
-
autoAcceptConnections: false
|
|
110
|
+
autoAcceptConnections: false,
|
|
111
|
+
maxReceivedMessageSize: this.maxMessageSize
|
|
107
112
|
});
|
|
108
113
|
}
|
|
109
114
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebSocketServer.js","sourceRoot":"","sources":["../../../../src/connection/WebSocket/WebSocketServer.ts"],"names":[],"mappings":";;;;;;AAAA,+BAA8G;AAC9G,iCAAgF;AAChF,kEAAwC;AACxC,yCAA8C;AAC9C,uDAAmD;AAKnD,0CAAoD;AACpD,iDAAgE;AAEhE,mCAA8B;AAC9B,4CAAmB;AAEnB,MAAM,MAAM,GAAG,IAAI,cAAM,CAAC,MAAM,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"WebSocketServer.js","sourceRoot":"","sources":["../../../../src/connection/WebSocket/WebSocketServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
import { EventEmitter } from 'eventemitter3';
|
|
2
2
|
import { RoutingRpcCommunicator } from '../transport/RoutingRpcCommunicator';
|
|
3
|
-
import { ServerCallContext } from '@protobuf-ts/runtime-rpc';
|
|
4
3
|
import { PeerID } from '../helpers/PeerID';
|
|
5
|
-
import {
|
|
4
|
+
import { ConnectivityResponse, Message, PeerDescriptor, DataEntry } from '../proto/packages/dht/protos/DhtRpc';
|
|
6
5
|
import { ITransport, TransportEvents } from '../transport/ITransport';
|
|
7
6
|
import { ConnectionManager, PortRange, TlsCertificate } from '../connection/ConnectionManager';
|
|
8
7
|
import { MetricsContext } from '@streamr/utils';
|
|
9
|
-
import { Empty } from '../proto/google/protobuf/empty';
|
|
10
8
|
import { Any } from '../proto/google/protobuf/any';
|
|
11
9
|
import { Router } from './routing/Router';
|
|
12
10
|
import { RecursiveFindResult } from './find/RecursiveFinder';
|
|
13
|
-
import {
|
|
14
|
-
import { IceServer } from '../connection/WebRTC/WebRtcConnector';
|
|
11
|
+
import { IceServer } from '../connection/WebRTC/WebRtcConnectorRpcLocal';
|
|
15
12
|
export interface DhtNodeEvents {
|
|
16
13
|
newContact: (peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => void;
|
|
17
14
|
contactRemoved: (peerDescriptor: PeerDescriptor, closestPeers: PeerDescriptor[]) => void;
|
|
@@ -29,17 +26,19 @@ export interface DhtNodeOptions {
|
|
|
29
26
|
maxNeighborListSize?: number;
|
|
30
27
|
numberOfNodesPerKBucket?: number;
|
|
31
28
|
joinNoProgressLimit?: number;
|
|
29
|
+
peerDiscoveryQueryBatchSize?: number;
|
|
32
30
|
dhtJoinTimeout?: number;
|
|
33
31
|
metricsContext?: MetricsContext;
|
|
34
32
|
storeHighestTtl?: number;
|
|
35
33
|
storeMaxTtl?: number;
|
|
36
|
-
|
|
34
|
+
networkConnectivityTimeout?: number;
|
|
35
|
+
storageRedundancyFactor?: number;
|
|
36
|
+
transport?: ITransport;
|
|
37
37
|
peerDescriptor?: PeerDescriptor;
|
|
38
38
|
entryPoints?: PeerDescriptor[];
|
|
39
39
|
websocketHost?: string;
|
|
40
40
|
websocketPortRange?: PortRange;
|
|
41
41
|
peerId?: string;
|
|
42
|
-
nodeName?: string;
|
|
43
42
|
rpcRequestTimeout?: number;
|
|
44
43
|
iceServers?: IceServer[];
|
|
45
44
|
webrtcAllowPrivateAddresses?: boolean;
|
|
@@ -47,43 +46,13 @@ export interface DhtNodeOptions {
|
|
|
47
46
|
webrtcDatachannelBufferThresholdHigh?: number;
|
|
48
47
|
webrtcNewConnectionTimeout?: number;
|
|
49
48
|
webrtcPortRange?: PortRange;
|
|
49
|
+
maxMessageSize?: number;
|
|
50
50
|
maxConnections?: number;
|
|
51
51
|
tlsCertificate?: TlsCertificate;
|
|
52
52
|
externalIp?: string;
|
|
53
53
|
}
|
|
54
|
-
export declare class DhtNodeConfig {
|
|
55
|
-
serviceId: string;
|
|
56
|
-
joinParallelism: number;
|
|
57
|
-
maxNeighborListSize: number;
|
|
58
|
-
numberOfNodesPerKBucket: number;
|
|
59
|
-
joinNoProgressLimit: number;
|
|
60
|
-
dhtJoinTimeout: number;
|
|
61
|
-
getClosestContactsLimit: number;
|
|
62
|
-
maxConnections: number;
|
|
63
|
-
storeHighestTtl: number;
|
|
64
|
-
storeMaxTtl: number;
|
|
65
|
-
storeNumberOfCopies: number;
|
|
66
|
-
metricsContext: MetricsContext;
|
|
67
|
-
peerId: string;
|
|
68
|
-
transportLayer?: ITransport;
|
|
69
|
-
peerDescriptor?: PeerDescriptor;
|
|
70
|
-
entryPoints?: PeerDescriptor[];
|
|
71
|
-
websocketHost?: string;
|
|
72
|
-
websocketPortRange?: PortRange;
|
|
73
|
-
nodeName?: string;
|
|
74
|
-
rpcRequestTimeout?: number;
|
|
75
|
-
iceServers?: IceServer[];
|
|
76
|
-
webrtcAllowPrivateAddresses?: boolean;
|
|
77
|
-
webrtcDatachannelBufferThresholdLow?: number;
|
|
78
|
-
webrtcDatachannelBufferThresholdHigh?: number;
|
|
79
|
-
webrtcNewConnectionTimeout?: number;
|
|
80
|
-
externalIp?: string;
|
|
81
|
-
webrtcPortRange?: PortRange;
|
|
82
|
-
tlsCertificate?: TlsCertificate;
|
|
83
|
-
constructor(conf: Partial<DhtNodeOptions>);
|
|
84
|
-
}
|
|
85
54
|
export type Events = TransportEvents & DhtNodeEvents;
|
|
86
|
-
export declare const createPeerDescriptor: (msg?: ConnectivityResponse, peerId?: string
|
|
55
|
+
export declare const createPeerDescriptor: (msg?: ConnectivityResponse, peerId?: string) => PeerDescriptor;
|
|
87
56
|
export declare class DhtNode extends EventEmitter<Events> implements ITransport {
|
|
88
57
|
private readonly config;
|
|
89
58
|
private bucket?;
|
|
@@ -92,11 +61,10 @@ export declare class DhtNode extends EventEmitter<Events> implements ITransport
|
|
|
92
61
|
private openInternetPeers?;
|
|
93
62
|
private randomPeers?;
|
|
94
63
|
private rpcCommunicator?;
|
|
95
|
-
private
|
|
64
|
+
private transport?;
|
|
96
65
|
private ownPeerDescriptor?;
|
|
97
|
-
private ownPeerId?;
|
|
98
66
|
router?: Router;
|
|
99
|
-
|
|
67
|
+
private storeRpcLocal?;
|
|
100
68
|
private localDataStore;
|
|
101
69
|
private recursiveFinder?;
|
|
102
70
|
private peerDiscovery?;
|
|
@@ -104,16 +72,14 @@ export declare class DhtNode extends EventEmitter<Events> implements ITransport
|
|
|
104
72
|
private started;
|
|
105
73
|
private stopped;
|
|
106
74
|
private entryPointDisconnectTimeout?;
|
|
107
|
-
|
|
108
|
-
contactOnAddedCounter: number;
|
|
109
|
-
constructor(conf: Partial<DhtNodeConfig>);
|
|
75
|
+
constructor(conf: DhtNodeOptions);
|
|
110
76
|
start(): Promise<void>;
|
|
111
77
|
private initKBuckets;
|
|
112
78
|
private onTransportConnected;
|
|
113
79
|
private onTransportDisconnected;
|
|
114
80
|
private bindDefaultServerMethods;
|
|
115
81
|
private isPeerCloserToIdThanSelf;
|
|
116
|
-
handleMessage
|
|
82
|
+
private handleMessage;
|
|
117
83
|
private generatePeerDescriptorCallBack;
|
|
118
84
|
private getClosestPeerDescriptors;
|
|
119
85
|
private onKBucketPing;
|
|
@@ -127,30 +93,27 @@ export declare class DhtNode extends EventEmitter<Events> implements ITransport
|
|
|
127
93
|
private addNewContact;
|
|
128
94
|
private connectToEntryPoint;
|
|
129
95
|
removeContact(contact: PeerDescriptor, removeFromOpenInternetPeers?: boolean): void;
|
|
130
|
-
send(msg: Message
|
|
131
|
-
joinDht(entryPointDescriptors: PeerDescriptor[],
|
|
132
|
-
startRecursiveFind(idToFind: Uint8Array,
|
|
96
|
+
send(msg: Message): Promise<void>;
|
|
97
|
+
joinDht(entryPointDescriptors: PeerDescriptor[], doAdditionalRandomPeerDiscovery?: boolean, retry?: boolean): Promise<void>;
|
|
98
|
+
startRecursiveFind(idToFind: Uint8Array, fetchData?: boolean, excludedPeer?: PeerDescriptor): Promise<RecursiveFindResult>;
|
|
133
99
|
storeDataToDht(key: Uint8Array, data: Any): Promise<PeerDescriptor[]>;
|
|
134
100
|
storeDataViaPeer(key: Uint8Array, data: Any, peer: PeerDescriptor): Promise<PeerDescriptor[]>;
|
|
135
|
-
getDataFromDht(idToFind: Uint8Array): Promise<
|
|
101
|
+
getDataFromDht(idToFind: Uint8Array): Promise<DataEntry[]>;
|
|
136
102
|
deleteDataFromDht(idToDelete: Uint8Array): Promise<void>;
|
|
137
103
|
findDataViaPeer(idToFind: Uint8Array, peer: PeerDescriptor): Promise<DataEntry[]>;
|
|
138
104
|
getRpcCommunicator(): RoutingRpcCommunicator;
|
|
139
105
|
getTransport(): ITransport;
|
|
140
106
|
getPeerDescriptor(): PeerDescriptor;
|
|
141
107
|
getAllConnectionPeerDescriptors(): PeerDescriptor[];
|
|
142
|
-
getK(): number;
|
|
143
108
|
getKBucketPeers(): PeerDescriptor[];
|
|
144
|
-
getOpenInternetPeerDescriptors(): PeerDescriptor[];
|
|
145
109
|
getNumberOfConnections(): number;
|
|
146
110
|
getNumberOfLocalLockedConnections(): number;
|
|
147
111
|
getNumberOfRemoteLockedConnections(): number;
|
|
148
112
|
getNumberOfWeakLockedConnections(): number;
|
|
149
|
-
|
|
113
|
+
waitForNetworkConnectivity(): Promise<void>;
|
|
150
114
|
hasJoined(): boolean;
|
|
151
|
-
getKnownEntryPoints(): PeerDescriptor[];
|
|
152
115
|
stop(): Promise<void>;
|
|
153
116
|
private getClosestPeers;
|
|
154
117
|
private ping;
|
|
155
|
-
leaveNotice
|
|
118
|
+
private leaveNotice;
|
|
156
119
|
}
|