@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.
Files changed (255) hide show
  1. package/dist/src/connection/ConnectionLockHandler.d.ts +1 -1
  2. package/dist/src/connection/ConnectionLockHandler.js.map +1 -1
  3. package/dist/src/connection/ConnectionLockRpcRemote.d.ts +10 -0
  4. package/dist/src/connection/{RemoteConnectionLocker.js → ConnectionLockRpcRemote.js} +21 -35
  5. package/dist/src/connection/ConnectionLockRpcRemote.js.map +1 -0
  6. package/dist/src/connection/ConnectionManager.d.ts +17 -41
  7. package/dist/src/connection/ConnectionManager.js +148 -212
  8. package/dist/src/connection/ConnectionManager.js.map +1 -1
  9. package/dist/src/connection/ConnectivityChecker.js +16 -13
  10. package/dist/src/connection/ConnectivityChecker.js.map +1 -1
  11. package/dist/src/connection/ConnectorFacade.d.ts +49 -0
  12. package/dist/src/connection/ConnectorFacade.js +83 -0
  13. package/dist/src/connection/ConnectorFacade.js.map +1 -0
  14. package/dist/src/connection/Handshaker.d.ts +1 -2
  15. package/dist/src/connection/Handshaker.js +1 -4
  16. package/dist/src/connection/Handshaker.js.map +1 -1
  17. package/dist/src/connection/ManagedConnection.d.ts +2 -6
  18. package/dist/src/connection/ManagedConnection.js +27 -36
  19. package/dist/src/connection/ManagedConnection.js.map +1 -1
  20. package/dist/src/connection/ManagedWebRtcConnection.d.ts +1 -1
  21. package/dist/src/connection/ManagedWebRtcConnection.js +2 -2
  22. package/dist/src/connection/ManagedWebRtcConnection.js.map +1 -1
  23. package/dist/src/connection/Simulator/Simulator.d.ts +0 -2
  24. package/dist/src/connection/Simulator/Simulator.js +0 -5
  25. package/dist/src/connection/Simulator/Simulator.js.map +1 -1
  26. package/dist/src/connection/Simulator/SimulatorConnection.js +16 -13
  27. package/dist/src/connection/Simulator/SimulatorConnection.js.map +1 -1
  28. package/dist/src/connection/Simulator/SimulatorConnector.d.ts +2 -3
  29. package/dist/src/connection/Simulator/SimulatorConnector.js +12 -14
  30. package/dist/src/connection/Simulator/SimulatorConnector.js.map +1 -1
  31. package/dist/src/connection/Simulator/SimulatorTransport.js +6 -1
  32. package/dist/src/connection/Simulator/SimulatorTransport.js.map +1 -1
  33. package/dist/src/connection/WebRTC/NodeWebRtcConnection.d.ts +3 -1
  34. package/dist/src/connection/WebRTC/NodeWebRtcConnection.js +12 -12
  35. package/dist/src/connection/WebRTC/NodeWebRtcConnection.js.map +1 -1
  36. package/dist/src/connection/WebRTC/{WebRtcConnector.d.ts → WebRtcConnectorRpcLocal.d.ts} +13 -13
  37. package/dist/src/connection/WebRTC/{WebRtcConnector.js → WebRtcConnectorRpcLocal.js} +46 -38
  38. package/dist/src/connection/WebRTC/WebRtcConnectorRpcLocal.js.map +1 -0
  39. package/dist/src/connection/WebRTC/WebRtcConnectorRpcRemote.d.ts +11 -0
  40. package/dist/src/connection/WebRTC/WebRtcConnectorRpcRemote.js +55 -0
  41. package/dist/src/connection/WebRTC/WebRtcConnectorRpcRemote.js.map +1 -0
  42. package/dist/src/connection/WebRTC/iceServerAsString.d.ts +1 -1
  43. package/dist/src/connection/WebSocket/{WebSocketConnector.d.ts → WebSocketConnectorRpcLocal.d.ts} +21 -11
  44. package/dist/src/connection/WebSocket/{WebSocketConnector.js → WebSocketConnectorRpcLocal.js} +80 -59
  45. package/dist/src/connection/WebSocket/WebSocketConnectorRpcLocal.js.map +1 -0
  46. package/dist/src/connection/WebSocket/WebSocketConnectorRpcRemote.d.ts +8 -0
  47. package/dist/src/connection/WebSocket/{RemoteWebSocketConnector.js → WebSocketConnectorRpcRemote.js} +12 -16
  48. package/dist/src/connection/WebSocket/WebSocketConnectorRpcRemote.js.map +1 -0
  49. package/dist/src/connection/WebSocket/WebSocketServer.d.ts +11 -1
  50. package/dist/src/connection/WebSocket/WebSocketServer.js +15 -10
  51. package/dist/src/connection/WebSocket/WebSocketServer.js.map +1 -1
  52. package/dist/src/dht/DhtNode.d.ts +18 -55
  53. package/dist/src/dht/DhtNode.js +122 -145
  54. package/dist/src/dht/DhtNode.js.map +1 -1
  55. package/dist/src/dht/{RemoteExternalApi.d.ts → ExternalApiRpcRemote.d.ts} +2 -2
  56. package/dist/src/dht/{RemoteExternalApi.js → ExternalApiRpcRemote.js} +5 -6
  57. package/dist/src/dht/ExternalApiRpcRemote.js.map +1 -0
  58. package/dist/src/dht/{DhtPeer.d.ts → RemoteDhtNode.d.ts} +2 -3
  59. package/dist/src/dht/{DhtPeer.js → RemoteDhtNode.js} +21 -19
  60. package/dist/src/dht/RemoteDhtNode.js.map +1 -0
  61. package/dist/src/dht/contact/ContactList.d.ts +0 -1
  62. package/dist/src/dht/contact/ContactList.js +0 -3
  63. package/dist/src/dht/contact/ContactList.js.map +1 -1
  64. package/dist/src/dht/contact/RandomContactList.d.ts +0 -1
  65. package/dist/src/dht/contact/RandomContactList.js +0 -3
  66. package/dist/src/dht/contact/RandomContactList.js.map +1 -1
  67. package/dist/src/dht/contact/SortedContactList.d.ts +0 -3
  68. package/dist/src/dht/contact/SortedContactList.js +0 -9
  69. package/dist/src/dht/contact/SortedContactList.js.map +1 -1
  70. package/dist/src/dht/discovery/DiscoverySession.d.ts +5 -7
  71. package/dist/src/dht/discovery/DiscoverySession.js +9 -10
  72. package/dist/src/dht/discovery/DiscoverySession.js.map +1 -1
  73. package/dist/src/dht/discovery/PeerDiscovery.d.ts +12 -11
  74. package/dist/src/dht/discovery/PeerDiscovery.js +33 -37
  75. package/dist/src/dht/discovery/PeerDiscovery.js.map +1 -1
  76. package/dist/src/dht/find/RecursiveFindSession.d.ts +9 -10
  77. package/dist/src/dht/find/RecursiveFindSession.js +13 -13
  78. package/dist/src/dht/find/RecursiveFindSession.js.map +1 -1
  79. package/dist/src/dht/find/RecursiveFinder.d.ts +9 -11
  80. package/dist/src/dht/find/RecursiveFinder.js +35 -36
  81. package/dist/src/dht/find/RecursiveFinder.js.map +1 -1
  82. package/dist/src/dht/find/RemoteRecursiveFindSession.d.ts +1 -1
  83. package/dist/src/dht/find/RemoteRecursiveFindSession.js +4 -4
  84. package/dist/src/dht/find/RemoteRecursiveFindSession.js.map +1 -1
  85. package/dist/src/dht/registerExternalApiRpcMethods.d.ts +1 -1
  86. package/dist/src/dht/registerExternalApiRpcMethods.js +4 -3
  87. package/dist/src/dht/registerExternalApiRpcMethods.js.map +1 -1
  88. package/dist/src/dht/routing/DuplicateDetector.d.ts +1 -2
  89. package/dist/src/dht/routing/DuplicateDetector.js +2 -7
  90. package/dist/src/dht/routing/DuplicateDetector.js.map +1 -1
  91. package/dist/src/dht/routing/Router.d.ts +12 -15
  92. package/dist/src/dht/routing/Router.js +30 -33
  93. package/dist/src/dht/routing/Router.js.map +1 -1
  94. package/dist/src/dht/routing/{RemoteRouter.d.ts → RouterRpcRemote.d.ts} +2 -2
  95. package/dist/src/dht/routing/{RemoteRouter.js → RouterRpcRemote.js} +5 -5
  96. package/dist/src/dht/routing/RouterRpcRemote.js.map +1 -0
  97. package/dist/src/dht/routing/RoutingSession.d.ts +3 -4
  98. package/dist/src/dht/routing/RoutingSession.js +6 -5
  99. package/dist/src/dht/routing/RoutingSession.js.map +1 -1
  100. package/dist/src/dht/store/{DataStore.d.ts → StoreRpcLocal.d.ts} +6 -6
  101. package/dist/src/dht/store/{DataStore.js → StoreRpcLocal.js} +34 -34
  102. package/dist/src/dht/store/StoreRpcLocal.js.map +1 -0
  103. package/dist/src/dht/store/{RemoteStore.d.ts → StoreRpcRemote.d.ts} +2 -2
  104. package/dist/src/dht/store/{RemoteStore.js → StoreRpcRemote.js} +4 -4
  105. package/dist/src/dht/store/StoreRpcRemote.js.map +1 -0
  106. package/dist/src/exports.d.ts +2 -8
  107. package/dist/src/exports.js +2 -14
  108. package/dist/src/exports.js.map +1 -1
  109. package/dist/src/helpers/PeerID.d.ts +0 -1
  110. package/dist/src/helpers/PeerID.js +0 -6
  111. package/dist/src/helpers/PeerID.js.map +1 -1
  112. package/dist/src/helpers/browser/isBrowserEnvironment.d.ts +1 -0
  113. package/dist/src/helpers/browser/isBrowserEnvironment.js +6 -0
  114. package/dist/src/helpers/browser/isBrowserEnvironment.js.map +1 -0
  115. package/dist/src/helpers/browser/isBrowserEnvironment_override.d.ts +1 -0
  116. package/dist/src/helpers/browser/isBrowserEnvironment_override.js +7 -0
  117. package/dist/src/helpers/browser/isBrowserEnvironment_override.js.map +1 -0
  118. package/dist/src/helpers/kademliaId.d.ts +1 -0
  119. package/dist/src/helpers/kademliaId.js +14 -0
  120. package/dist/src/helpers/kademliaId.js.map +1 -0
  121. package/dist/src/helpers/peerIdFromPeerDescriptor.d.ts +1 -1
  122. package/dist/src/helpers/peerIdFromPeerDescriptor.js +3 -3
  123. package/dist/src/helpers/peerIdFromPeerDescriptor.js.map +1 -1
  124. package/dist/src/helpers/protoClasses.js +2 -2
  125. package/dist/src/helpers/protoClasses.js.map +1 -1
  126. package/dist/src/proto/packages/dht/protos/DhtRpc.client.d.ts +29 -29
  127. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js +39 -39
  128. package/dist/src/proto/packages/dht/protos/DhtRpc.client.js.map +1 -1
  129. package/dist/src/proto/packages/dht/protos/DhtRpc.d.ts +49 -162
  130. package/dist/src/proto/packages/dht/protos/DhtRpc.js +47 -88
  131. package/dist/src/proto/packages/dht/protos/DhtRpc.js.map +1 -1
  132. package/dist/src/proto/packages/dht/protos/DhtRpc.server.d.ts +15 -15
  133. package/dist/src/transport/RoutingRpcCommunicator.js +1 -0
  134. package/dist/src/transport/RoutingRpcCommunicator.js.map +1 -1
  135. package/package.json +10 -9
  136. package/protos/DhtRpc.proto +30 -60
  137. package/src/connection/ConnectionLockHandler.ts +1 -1
  138. package/src/connection/ConnectionLockRpcRemote.ts +62 -0
  139. package/src/connection/ConnectionManager.ts +178 -274
  140. package/src/connection/ConnectivityChecker.ts +15 -12
  141. package/src/connection/ConnectorFacade.ts +140 -0
  142. package/src/connection/Handshaker.ts +0 -5
  143. package/src/connection/ManagedConnection.ts +26 -40
  144. package/src/connection/ManagedWebRtcConnection.ts +0 -2
  145. package/src/connection/Simulator/Simulator.ts +0 -7
  146. package/src/connection/Simulator/SimulatorConnection.ts +16 -13
  147. package/src/connection/Simulator/SimulatorConnector.ts +13 -19
  148. package/src/connection/Simulator/SimulatorTransport.ts +6 -1
  149. package/src/connection/WebRTC/NodeWebRtcConnection.ts +15 -14
  150. package/src/connection/WebRTC/{WebRtcConnector.ts → WebRtcConnectorRpcLocal.ts} +68 -56
  151. package/src/connection/WebRTC/WebRtcConnectorRpcRemote.ts +71 -0
  152. package/src/connection/WebRTC/iceServerAsString.ts +1 -1
  153. package/src/connection/WebSocket/{WebSocketConnector.ts → WebSocketConnectorRpcLocal.ts} +102 -79
  154. package/src/connection/WebSocket/WebSocketConnectorRpcRemote.ts +45 -0
  155. package/src/connection/WebSocket/WebSocketServer.ts +26 -8
  156. package/src/dht/DhtNode.ts +176 -203
  157. package/src/dht/{RemoteExternalApi.ts → ExternalApiRpcRemote.ts} +3 -4
  158. package/src/dht/{DhtPeer.ts → RemoteDhtNode.ts} +11 -9
  159. package/src/dht/contact/ContactList.ts +0 -4
  160. package/src/dht/contact/RandomContactList.ts +0 -4
  161. package/src/dht/contact/SortedContactList.ts +0 -12
  162. package/src/dht/discovery/DiscoverySession.ts +20 -23
  163. package/src/dht/discovery/PeerDiscovery.ts +47 -45
  164. package/src/dht/find/RecursiveFindSession.ts +21 -22
  165. package/src/dht/find/RecursiveFinder.ts +45 -49
  166. package/src/dht/find/RemoteRecursiveFindSession.ts +6 -6
  167. package/src/dht/registerExternalApiRpcMethods.ts +8 -5
  168. package/src/dht/routing/DuplicateDetector.ts +3 -10
  169. package/src/dht/routing/Router.ts +39 -45
  170. package/src/dht/routing/{RemoteRouter.ts → RouterRpcRemote.ts} +4 -4
  171. package/src/dht/routing/RoutingSession.ts +15 -15
  172. package/src/dht/store/{DataStore.ts → StoreRpcLocal.ts} +42 -42
  173. package/src/dht/store/{RemoteStore.ts → StoreRpcRemote.ts} +2 -2
  174. package/src/exports.ts +2 -8
  175. package/src/helpers/PeerID.ts +0 -7
  176. package/src/helpers/browser/isBrowserEnvironment.ts +1 -0
  177. package/src/helpers/browser/isBrowserEnvironment_override.ts +3 -0
  178. package/src/helpers/kademliaId.ts +8 -0
  179. package/src/helpers/peerIdFromPeerDescriptor.ts +1 -1
  180. package/src/helpers/protoClasses.ts +4 -4
  181. package/src/proto/packages/dht/protos/DhtRpc.client.ts +54 -54
  182. package/src/proto/packages/dht/protos/DhtRpc.server.ts +15 -15
  183. package/src/proto/packages/dht/protos/DhtRpc.ts +77 -216
  184. package/src/transport/RoutingRpcCommunicator.ts +1 -0
  185. package/test/benchmark/KademliaCorrectness.test.ts +4 -2
  186. package/test/benchmark/RecursiveFind.test.ts +6 -6
  187. package/test/end-to-end/Layer0-Layer1.test.ts +9 -9
  188. package/test/end-to-end/Layer0WebRTC-Layer1.test.ts +5 -5
  189. package/test/end-to-end/Layer0WebRTC.test.ts +5 -6
  190. package/test/end-to-end/Layer1-Scale-WebRTC.test.ts +13 -8
  191. package/test/end-to-end/Layer1-Scale-WebSocket.test.ts +15 -10
  192. package/test/end-to-end/WebSocketConnectionRequest.test.ts +5 -5
  193. package/test/integration/ConnectionLocking.test.ts +32 -26
  194. package/test/integration/ConnectionManager.test.ts +90 -93
  195. package/test/integration/DhtJoinPeerDiscovery.test.ts +53 -0
  196. package/test/integration/DhtRpc.test.ts +4 -6
  197. package/test/integration/Layer1-scale.test.ts +8 -8
  198. package/test/integration/MigrateData.test.ts +9 -9
  199. package/test/integration/Mock-Layer1-Layer0.test.ts +1 -2
  200. package/test/integration/RecursiveFind.test.ts +5 -5
  201. package/test/integration/{DhtPeer.test.ts → RemoteDhtNode.test.ts} +11 -12
  202. package/test/integration/RouteMessage.test.ts +7 -9
  203. package/test/integration/{RemoteRouter.test.ts → RouterRpcRemote.test.ts} +13 -14
  204. package/test/integration/RpcErrors.test.ts +25 -10
  205. package/test/integration/ScaleDownDht.test.ts +8 -8
  206. package/test/integration/SimultaneousConnections.test.ts +35 -36
  207. package/test/integration/Store.test.ts +8 -9
  208. package/test/integration/StoreAndDelete.test.ts +11 -11
  209. package/test/integration/StoreOnDhtWithTwoNodes.test.ts +7 -7
  210. package/test/integration/{RemoteStore.test.ts → StoreRpcRemote.test.ts} +17 -18
  211. package/test/integration/WebRtcConnectionManagement.test.ts +26 -19
  212. package/test/integration/WebRtcConnectorRpc.test.ts +17 -32
  213. package/test/integration/WebSocket.test.ts +4 -2
  214. package/test/integration/WebSocketConnectionManagement.test.ts +30 -17
  215. package/test/integration/WebSocketConnectorRpc.test.ts +10 -15
  216. package/test/unit/DuplicateDetector.test.ts +3 -4
  217. package/test/unit/LocalDataStore.test.ts +6 -8
  218. package/test/unit/RandomContactList.test.ts +1 -1
  219. package/test/unit/RecursiveFinder.test.ts +13 -18
  220. package/test/unit/Router.test.ts +18 -21
  221. package/test/unit/WebSocketConnectorRpcLocal.test.ts +64 -0
  222. package/test/unit/WebSocketServer.test.ts +24 -12
  223. package/test/unit/{webrtcReplaceInternalIpWithExternalIp.ts → webrtcReplaceInternalIpWithExternalIp.test.ts} +1 -1
  224. package/test/utils/mock/RecursiveFinder.ts +2 -2
  225. package/test/utils/mock/Router.ts +9 -11
  226. package/test/utils/mock/Transport.ts +2 -2
  227. package/test/utils/utils.ts +55 -74
  228. package/dist/src/connection/RemoteConnectionLocker.d.ts +0 -13
  229. package/dist/src/connection/RemoteConnectionLocker.js.map +0 -1
  230. package/dist/src/connection/WebRTC/RemoteWebrtcConnector.d.ts +0 -12
  231. package/dist/src/connection/WebRTC/RemoteWebrtcConnector.js +0 -74
  232. package/dist/src/connection/WebRTC/RemoteWebrtcConnector.js.map +0 -1
  233. package/dist/src/connection/WebRTC/WebRtcConnector.js.map +0 -1
  234. package/dist/src/connection/WebSocket/RemoteWebSocketConnector.d.ts +0 -9
  235. package/dist/src/connection/WebSocket/RemoteWebSocketConnector.js.map +0 -1
  236. package/dist/src/connection/WebSocket/WebSocketConnector.js.map +0 -1
  237. package/dist/src/dht/DhtPeer.js.map +0 -1
  238. package/dist/src/dht/RemoteExternalApi.js.map +0 -1
  239. package/dist/src/dht/routing/RemoteRouter.js.map +0 -1
  240. package/dist/src/dht/store/DataStore.js.map +0 -1
  241. package/dist/src/dht/store/RemoteStore.js.map +0 -1
  242. package/dist/src/helpers/browser/isBrowser.d.ts +0 -1
  243. package/dist/src/helpers/browser/isBrowser.js +0 -6
  244. package/dist/src/helpers/browser/isBrowser.js.map +0 -1
  245. package/dist/src/helpers/browser/isNodeJS.d.ts +0 -1
  246. package/dist/src/helpers/browser/isNodeJS.js +0 -6
  247. package/dist/src/helpers/browser/isNodeJS.js.map +0 -1
  248. package/src/connection/RemoteConnectionLocker.ts +0 -84
  249. package/src/connection/WebRTC/RemoteWebrtcConnector.ts +0 -93
  250. package/src/connection/WebSocket/RemoteWebSocketConnector.ts +0 -49
  251. package/src/helpers/browser/isBrowser.ts +0 -1
  252. package/src/helpers/browser/isNodeJS.ts +0 -1
  253. package/test/integration/DhtWithMockConnectionLatencies.test.ts +0 -46
  254. package/test/integration/DhtWithMockConnections.test.ts +0 -46
  255. package/test/integration/DhtWithRealConnectionLatencies.test.ts +0 -47
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.WebSocketConnector = exports.connectivityMethodToWebSocketUrl = void 0;
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 RemoteWebSocketConnector_1 = require("./RemoteWebSocketConnector");
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 WebSocketConnector {
26
- constructor(protocolVersion, rpcTransport, fnCanConnect, incomingConnectionCallback, portRange, host, entrypoints, tlsCertificate) {
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, peerDescriptor);
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, this.protocolVersion, IConnection_1.ConnectionType.WEBSOCKET_SERVER, undefined, serverWebSocket);
44
+ const managedConnection = new ManagedConnection_1.ManagedConnection(this.ownPeerDescriptor, IConnection_1.ConnectionType.WEBSOCKET_SERVER, undefined, serverWebSocket);
40
45
  managedConnection.setPeerDescriptor(peerDescriptor);
41
- if (this.incomingConnectionCallback(managedConnection)) {
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.protocolVersion = protocolVersion;
51
- this.webSocketServer = portRange ? new WebSocketServer_1.WebSocketServer() : undefined;
52
- this.incomingConnectionCallback = incomingConnectionCallback;
53
- this.portRange = portRange;
54
- this.host = host;
55
- this.entrypoints = entrypoints;
56
- this.tlsCertificate = tlsCertificate;
57
- this.canConnectFunction = fnCanConnect.bind(this);
58
- this.rpcCommunicator = new ListeningRpcCommunicator_1.ListeningRpcCommunicator(WebSocketConnector.WEBSOCKET_CONNECTOR_SERVICE_ID, rpcTransport, {
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, this.protocolVersion, connection);
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(this.portRange, this.tlsCertificate);
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(reattempt = 0) {
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
- try {
107
- if (!this.webSocketServer) {
108
- // If no websocket server, return openInternet: false
109
- return noServerConnectivityResponse;
110
- }
111
- else {
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
- // Do real connectivity checking
124
- return await this.connectivityChecker.sendConnectivityRequest((0, lodash_1.sample)(this.entrypoints));
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
- catch (err) {
129
- if (reattempt < ENTRY_POINT_CONNECTION_ATTEMPTS) {
130
- logger.error('Failed to connect to the entrypoint', { error: err });
131
- await (0, utils_1.wait)(2000);
132
- return this.checkConnectivity(reattempt + 1);
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, this.protocolVersion, IConnection_1.ConnectionType.WEBSOCKET_CLIENT, socket, undefined);
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 RemoteWebSocketConnector_1.RemoteWebSocketConnector(targetPeerDescriptor, (0, proto_rpc_1.toProtoRpcClient)(new DhtRpc_client_1.WebSocketConnectorServiceClient(this.rpcCommunicator.getRpcClientTransport())));
170
- remoteConnector.requestConnection(ownPeerDescriptor, ownPeerDescriptor.websocket.host, ownPeerDescriptor.websocket.port);
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, this.protocolVersion, IConnection_1.ConnectionType.WEBSOCKET_SERVER);
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
- // IWebSocketConnectorService implementation
192
- async requestConnection(request, _context) {
193
- if (!this.destroyed && this.canConnectFunction(request.requester, request.ip, request.port)) {
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(request.requester);
199
- this.incomingConnectionCallback(connection);
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.WebSocketConnector = WebSocketConnector;
212
- WebSocketConnector.WEBSOCKET_CONNECTOR_SERVICE_ID = 'system/websocketconnector';
213
- //# sourceMappingURL=WebSocketConnector.js.map
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
+ }
@@ -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.RemoteWebSocketConnector = void 0;
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 RemoteWebSocketConnector {
31
- constructor(peerDescriptor, client) {
32
- this.peerDescriptor = peerDescriptor;
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(sourceDescriptor, ip, port) {
36
- logger.trace(`Requesting WebSocket connection from ${this.peerDescriptor.kademliaId.toString()}`);
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.client.requestConnection(request, options);
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.RemoteWebSocketConnector = RemoteWebSocketConnector;
63
- //# sourceMappingURL=RemoteWebSocketConnector.js.map
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
- start(portRange: PortRange, tlsCertificate?: TlsCertificate): Promise<number>;
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(...arguments);
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(portRange, tlsCertificate) {
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(_uorigin) {
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(request.origin)) {
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;AASjC,MAAa,eAAgB,SAAQ,uBAAoC;IAAzE;;QAIqB,oBAAe,GAAG,IAAI,eAAe,EAAE,CAAA;IAkG5D,CAAC;IAhGU,KAAK,CAAC,KAAK,CAAC,SAAoB,EAAE,cAA+B;QACpE,MAAM,KAAK,GAAG,IAAA,cAAK,EAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;QACrD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACtB,IAAI;gBACA,MAAM,IAAA,mBAAW,EAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;gBACtF,OAAO,IAAI,CAAA;aACd;YAAC,OAAO,GAAG,EAAE;gBACV,IAAI,GAAG,CAAC,aAAa,EAAE,IAAI,KAAK,YAAY,EAAE;oBAC1C,MAAM,CAAC,KAAK,CAAC,6CAA6C,IAAI,4BAA4B,CAAC,CAAA;iBAC9F;qBAAM;oBACH,MAAM,IAAI,kCAAyB,CAAC,GAAG,CAAC,CAAA;iBAC3C;aACJ;SACJ;QACD,MAAM,IAAI,kCAAyB,CAAC,0DAA0D,SAAS,CAAC,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC,CAAA;IACnI,CAAC;IAEO,WAAW,CAAC,IAAY,EAAE,cAA+B;QAC7D,MAAM,eAAe,GAAG,CAAC,OAAwB,EAAE,QAAyC,EAAE,EAAE;YAC5F,MAAM,CAAC,KAAK,CAAC,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;YACnD,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;YACvB,QAAQ,CAAC,GAAG,EAAE,CAAA;QAClB,CAAC,CAAA;QACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC,CAAC;gBAC9B,IAAA,oBAAiB,EAAC;oBACd,GAAG,EAAE,YAAE,CAAC,YAAY,CAAC,cAAc,CAAC,kBAAkB,CAAC;oBACvD,IAAI,EAAE,YAAE,CAAC,YAAY,CAAC,cAAc,CAAC,YAAY,CAAC;iBACrD,EAAE,eAAe,CAAC;gBACnB,CAAC;oBACD,IAAA,mBAAgB,EAAC,eAAe,CAAC,CAAA;YAErC,SAAS,eAAe,CAAC,QAAgB;gBACrC,OAAO,IAAI,CAAA;YACf,CAAC;YAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAEpD,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;gBACpC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBAClC,2DAA2D;oBAC3D,OAAO,CAAC,MAAM,EAAE,CAAA;oBAChB,MAAM,CAAC,KAAK,CAAC,0BAA0B,GAAG,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,CAAA;oBACxE,OAAM;iBACT;gBAED,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;gBAE5D,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAA;gBAErC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,iCAAe,CAAC,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAA;YAChF,CAAC,CAAC,CAAA;YACF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;gBACzC,MAAM,CAAC,IAAI,kCAAyB,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC,CAAA;YAClF,CAAC,CAAC,CAAA;YAEF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;gBACnC,MAAM,CAAC,KAAK,CAAC,wCAAwC,GAAG,IAAI,CAAC,CAAA;gBAC7D,OAAO,EAAE,CAAA;YACb,CAAC,CAAC,CAAA;YAEF,IAAI;gBACA,gFAAgF;gBAChF,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;aAC1C;YAAC,OAAO,CAAC,EAAE;gBACR,MAAM,CAAC,IAAI,kCAAyB,CAAC,qCAAqC,EAAE,CAAC,CAAC,CAAC,CAAA;aAClF;QACL,CAAC,CAAC,CAAA;IACN,CAAC;IAEM,IAAI;QACP,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAA;QAC5B,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACzB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;YACpC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAA;YACzB,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,EAAE;gBACxB,OAAO,EAAE,CAAA;YACb,CAAC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC;IAEO,cAAc,CAAC,UAAoC;QACvD,yDAAyD;QAEzD,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;YACvC,OAAO,IAAI,cAAc,CAAC;gBACtB,UAAU;gBACV,qBAAqB,EAAE,KAAK;aAC/B,CAAC,CAAA;SACL;aAAM;YACH,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAQ,CAAC;gBAChC,UAAU;gBACV,qBAAqB,EAAE,KAAK;aAC/B,CAAC,CAAA;SACL;IACL,CAAC;CACJ;AAtGD,0CAsGC"}
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 { LeaveNotice, ConnectivityResponse, Message, PeerDescriptor, FindMode, DataEntry } from '../proto/packages/dht/protos/DhtRpc';
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 { DataStore } from './store/DataStore';
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
- transportLayer?: ITransport;
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, nodeName?: string) => PeerDescriptor;
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 transportLayer?;
64
+ private transport?;
96
65
  private ownPeerDescriptor?;
97
- private ownPeerId?;
98
66
  router?: Router;
99
- dataStore?: DataStore;
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
- contactAddCounter: number;
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(message: Message): void;
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, _doNotConnect?: boolean): Promise<void>;
131
- joinDht(entryPointDescriptors: PeerDescriptor[], doRandomJoin?: boolean, retry?: boolean): Promise<void>;
132
- startRecursiveFind(idToFind: Uint8Array, findMode?: FindMode, excludedPeer?: PeerDescriptor): Promise<RecursiveFindResult>;
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<RecursiveFindResult>;
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
- isJoinOngoing(): boolean;
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(request: LeaveNotice, context: ServerCallContext): Promise<Empty>;
118
+ private leaveNotice;
156
119
  }