@eleven-am/pondsocket 0.1.205 → 0.1.208

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.
@@ -19,7 +19,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
19
19
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
20
20
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
21
21
  };
22
- var _RedisDistributedBackend_instances, _RedisDistributedBackend_publishClient, _RedisDistributedBackend_subscribeClient, _RedisDistributedBackend_keyPrefix, _RedisDistributedBackend_subject, _RedisDistributedBackend_isConnected, _RedisDistributedBackend_initialize, _RedisDistributedBackend_handleRedisMessage, _RedisDistributedBackend_isValidMessage, _RedisDistributedBackend_buildKey;
22
+ var _RedisDistributedBackend_instances, _RedisDistributedBackend_publishClient, _RedisDistributedBackend_subscribeClient, _RedisDistributedBackend_keyPrefix, _RedisDistributedBackend_subject, _RedisDistributedBackend_nodeId, _RedisDistributedBackend_isConnected, _RedisDistributedBackend_initialize, _RedisDistributedBackend_handleRedisMessage, _RedisDistributedBackend_isValidMessage, _RedisDistributedBackend_buildKey;
23
23
  Object.defineProperty(exports, "__esModule", { value: true });
24
24
  exports.RedisDistributedBackend = void 0;
25
25
  const pondsocket_common_1 = require("@eleven-am/pondsocket-common");
@@ -32,9 +32,12 @@ class RedisDistributedBackend {
32
32
  _RedisDistributedBackend_subscribeClient.set(this, void 0);
33
33
  _RedisDistributedBackend_keyPrefix.set(this, void 0);
34
34
  _RedisDistributedBackend_subject.set(this, void 0);
35
+ _RedisDistributedBackend_nodeId.set(this, void 0);
35
36
  _RedisDistributedBackend_isConnected.set(this, false);
36
37
  const { host = 'localhost', port = 6379, password, database = 0, url, keyPrefix = 'pondsocket', } = options;
37
38
  __classPrivateFieldSet(this, _RedisDistributedBackend_keyPrefix, keyPrefix, "f");
39
+ __classPrivateFieldSet(this, _RedisDistributedBackend_nodeId, Math.random().toString(36)
40
+ .substring(2, 15), "f");
38
41
  __classPrivateFieldSet(this, _RedisDistributedBackend_subject, new pondsocket_common_1.Subject(), "f");
39
42
  // Create Redis clients
40
43
  const clientConfig = url
@@ -58,7 +61,7 @@ class RedisDistributedBackend {
58
61
  */
59
62
  subscribe(endpointName, channelName, handler) {
60
63
  return this.subject.subscribe((message) => {
61
- if (message.endpointName === endpointName && message.channelName === channelName) {
64
+ if (message.endpointName === endpointName && message.channelName === channelName && message.nodeId !== __classPrivateFieldGet(this, _RedisDistributedBackend_nodeId, "f")) {
62
65
  handler(message);
63
66
  }
64
67
  });
@@ -72,7 +75,8 @@ class RedisDistributedBackend {
72
75
  throw new Error('Redis backend is not connected');
73
76
  }
74
77
  const key = __classPrivateFieldGet(this, _RedisDistributedBackend_instances, "m", _RedisDistributedBackend_buildKey).call(this, endpointName, channelName);
75
- const serializedMessage = JSON.stringify(message);
78
+ const distributedMessage = Object.assign(Object.assign({}, message), { nodeId: __classPrivateFieldGet(this, _RedisDistributedBackend_nodeId, "f") });
79
+ const serializedMessage = JSON.stringify(distributedMessage);
76
80
  yield __classPrivateFieldGet(this, _RedisDistributedBackend_publishClient, "f").publish(key, serializedMessage);
77
81
  });
78
82
  }
@@ -93,7 +97,7 @@ class RedisDistributedBackend {
93
97
  }
94
98
  }
95
99
  exports.RedisDistributedBackend = RedisDistributedBackend;
96
- _RedisDistributedBackend_publishClient = new WeakMap(), _RedisDistributedBackend_subscribeClient = new WeakMap(), _RedisDistributedBackend_keyPrefix = new WeakMap(), _RedisDistributedBackend_subject = new WeakMap(), _RedisDistributedBackend_isConnected = new WeakMap(), _RedisDistributedBackend_instances = new WeakSet(), _RedisDistributedBackend_initialize = function _RedisDistributedBackend_initialize() {
100
+ _RedisDistributedBackend_publishClient = new WeakMap(), _RedisDistributedBackend_subscribeClient = new WeakMap(), _RedisDistributedBackend_keyPrefix = new WeakMap(), _RedisDistributedBackend_subject = new WeakMap(), _RedisDistributedBackend_nodeId = new WeakMap(), _RedisDistributedBackend_isConnected = new WeakMap(), _RedisDistributedBackend_instances = new WeakSet(), _RedisDistributedBackend_initialize = function _RedisDistributedBackend_initialize() {
97
101
  return __awaiter(this, void 0, void 0, function* () {
98
102
  yield Promise.all([
99
103
  __classPrivateFieldGet(this, _RedisDistributedBackend_publishClient, "f").connect(),
@@ -77,10 +77,11 @@ class ChannelEngine {
77
77
  const isFirstUser = this.users.size === 0;
78
78
  __classPrivateFieldGet(this, _ChannelEngine_assignsCache, "f").set(userId, assigns);
79
79
  __classPrivateFieldGet(this, _ChannelEngine_instances, "m", _ChannelEngine_buildSubscriber).call(this, userId, onMessage);
80
- if (isFirstUser && __classPrivateFieldGet(this, _ChannelEngine_backend, "f")) {
81
- __classPrivateFieldGet(this, _ChannelEngine_instances, "m", _ChannelEngine_requestChannelState).call(this);
82
- }
80
+ this.sendMessage(pondsocket_common_1.SystemSender.CHANNEL, [userId], pondsocket_common_1.ServerActions.SYSTEM, pondsocket_common_1.Events.ACKNOWLEDGE, {});
83
81
  if (__classPrivateFieldGet(this, _ChannelEngine_backend, "f")) {
82
+ if (isFirstUser) {
83
+ __classPrivateFieldGet(this, _ChannelEngine_instances, "m", _ChannelEngine_requestChannelState).call(this);
84
+ }
84
85
  __classPrivateFieldGet(this, _ChannelEngine_instances, "m", _ChannelEngine_broadcastToNodes).call(this, {
85
86
  type: types_1.DistributedMessageType.USER_JOINED,
86
87
  endpointName: __classPrivateFieldGet(this, _ChannelEngine_endpointId, "f"),
@@ -90,9 +91,6 @@ class ChannelEngine {
90
91
  assigns,
91
92
  });
92
93
  }
93
- // Send acknowledgment
94
- this.sendMessage(pondsocket_common_1.SystemSender.CHANNEL, [userId], pondsocket_common_1.ServerActions.SYSTEM, pondsocket_common_1.Events.ACKNOWLEDGE, {});
95
- // Return unsubscribe function
96
94
  return () => this.removeUser(userId);
97
95
  }
98
96
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eleven-am/pondsocket",
3
- "version": "0.1.205",
3
+ "version": "0.1.208",
4
4
  "description": "PondSocket is a fast simple socket server",
5
5
  "keywords": [
6
6
  "socket",