@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.
package/abstracts/distributor.js
CHANGED
|
@@ -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
|
|
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(),
|
package/engines/channelEngine.js
CHANGED
|
@@ -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
|
-
|
|
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
|
/**
|