@nxtedition/deepstream.io-client-js 23.4.53 → 23.4.54
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/package.json +1 -1
- package/src/message/connection.js +14 -59
- package/src/record/record-handler.js +1 -4
- package/src/record/record.js +12 -28
package/package.json
CHANGED
|
@@ -21,7 +21,6 @@ const Connection = function (client, url, options) {
|
|
|
21
21
|
this._tooManyAuthAttempts = false
|
|
22
22
|
this._connectionAuthenticationTimeout = false
|
|
23
23
|
this._challengeDenied = false
|
|
24
|
-
this._sendQueue = new FixedQueue()
|
|
25
24
|
this._message = {
|
|
26
25
|
raw: null,
|
|
27
26
|
topic: null,
|
|
@@ -35,8 +34,6 @@ const Connection = function (client, url, options) {
|
|
|
35
34
|
|
|
36
35
|
this._processingRecv = false
|
|
37
36
|
this._recvMessages = this._recvMessages.bind(this)
|
|
38
|
-
this._processingSend = false
|
|
39
|
-
this._sendMessages = this._sendMessages.bind(this)
|
|
40
37
|
|
|
41
38
|
this._url = new URL(url)
|
|
42
39
|
|
|
@@ -82,22 +79,18 @@ Connection.prototype.authenticate = function (authParams, callback) {
|
|
|
82
79
|
}
|
|
83
80
|
|
|
84
81
|
Connection.prototype.sendMsg = function (topic, action, data) {
|
|
85
|
-
this.send(messageBuilder.getMsg(topic, action, data))
|
|
82
|
+
return this.send(messageBuilder.getMsg(topic, action, data))
|
|
86
83
|
}
|
|
87
84
|
|
|
88
85
|
Connection.prototype.sendMsg1 = function (topic, action, p0) {
|
|
89
|
-
this.send(messageBuilder.getMsg1(topic, action, p0))
|
|
86
|
+
return this.send(messageBuilder.getMsg1(topic, action, p0))
|
|
90
87
|
}
|
|
91
88
|
|
|
92
89
|
Connection.prototype.sendMsg2 = function (topic, action, p0, p1) {
|
|
93
|
-
this.send(messageBuilder.getMsg2(topic, action, p0, p1))
|
|
90
|
+
return this.send(messageBuilder.getMsg2(topic, action, p0, p1))
|
|
94
91
|
}
|
|
95
92
|
|
|
96
93
|
Connection.prototype.close = function () {
|
|
97
|
-
while (!this._sendQueue.isEmpty()) {
|
|
98
|
-
this._submit(this._sendQueue.shift())
|
|
99
|
-
}
|
|
100
|
-
this._reset()
|
|
101
94
|
this._deliberateClose = true
|
|
102
95
|
this._endpoint?.close()
|
|
103
96
|
|
|
@@ -133,48 +126,10 @@ Connection.prototype.send = function (message) {
|
|
|
133
126
|
err,
|
|
134
127
|
message.split(C.MESSAGE_PART_SEPERATOR).map((x) => x.slice(0, 256))
|
|
135
128
|
)
|
|
136
|
-
return
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
if (this._processingSend) {
|
|
140
|
-
this._sendQueue.push(message)
|
|
141
|
-
} else if (
|
|
142
|
-
this._state === C.CONNECTION_STATE.OPEN &&
|
|
143
|
-
this._endpoint.readyState === this._endpoint.OPEN
|
|
144
|
-
) {
|
|
145
|
-
this._submit(message)
|
|
146
|
-
} else {
|
|
147
|
-
this._sendQueue.push(message)
|
|
148
|
-
this._processingSend = true
|
|
149
|
-
this._sendMessages()
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
Connection.prototype._sendMessages = function (deadline) {
|
|
154
|
-
if (
|
|
155
|
-
this._state !== C.CONNECTION_STATE.OPEN ||
|
|
156
|
-
this._endpoint.readyState !== this._endpoint.OPEN
|
|
157
|
-
) {
|
|
158
|
-
this._processingSend = false
|
|
159
|
-
return
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
for (
|
|
163
|
-
let n = 0;
|
|
164
|
-
// eslint-disable-next-line no-unmodified-loop-condition
|
|
165
|
-
n < this._batchSize && (!deadline || deadline.timeRemaining() || deadline.didTimeout);
|
|
166
|
-
++n
|
|
167
|
-
) {
|
|
168
|
-
const message = this._sendQueue.shift()
|
|
169
|
-
if (!message) {
|
|
170
|
-
this._processingSend = false
|
|
171
|
-
return
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
this._submit(message)
|
|
129
|
+
return false
|
|
175
130
|
}
|
|
176
131
|
|
|
177
|
-
this.
|
|
132
|
+
return this._submit(message)
|
|
178
133
|
}
|
|
179
134
|
|
|
180
135
|
Connection.prototype._submit = function (message) {
|
|
@@ -183,12 +138,18 @@ Connection.prototype._submit = function (message) {
|
|
|
183
138
|
if (message.length > maxPacketSize) {
|
|
184
139
|
const err = new Error(`Packet to big: ${message.length} > ${maxPacketSize}`)
|
|
185
140
|
this._client._$onError(C.TOPIC.CONNECTION, C.EVENT.CONNECTION_ERROR, err)
|
|
186
|
-
|
|
141
|
+
return false
|
|
142
|
+
} else if (
|
|
143
|
+
this._state === C.CONNECTION_STATE.OPEN &&
|
|
144
|
+
this._endpoint.readyState === this._endpoint.OPEN
|
|
145
|
+
) {
|
|
187
146
|
this.emit('send', message)
|
|
188
147
|
this._endpoint.send(message)
|
|
148
|
+
return true
|
|
189
149
|
} else {
|
|
190
150
|
const err = new Error('Tried to send message on a closed websocket connection')
|
|
191
151
|
this._client._$onError(C.TOPIC.CONNECTION, C.EVENT.CONNECTION_ERROR, err)
|
|
152
|
+
return false
|
|
192
153
|
}
|
|
193
154
|
}
|
|
194
155
|
|
|
@@ -210,7 +171,7 @@ Connection.prototype._onOpen = function () {
|
|
|
210
171
|
}
|
|
211
172
|
|
|
212
173
|
Connection.prototype._onError = function (err) {
|
|
213
|
-
this.
|
|
174
|
+
this._recvMessages()
|
|
214
175
|
|
|
215
176
|
if (err.error) {
|
|
216
177
|
const { message, error } = err
|
|
@@ -232,7 +193,7 @@ Connection.prototype._onError = function (err) {
|
|
|
232
193
|
}
|
|
233
194
|
|
|
234
195
|
Connection.prototype._onClose = function () {
|
|
235
|
-
this.
|
|
196
|
+
this._recvMessages()
|
|
236
197
|
|
|
237
198
|
if (this._deliberateClose === true) {
|
|
238
199
|
this._setState(C.CONNECTION_STATE.CLOSED)
|
|
@@ -291,11 +252,6 @@ Connection.prototype._recvMessages = function (deadline) {
|
|
|
291
252
|
this._schedule(this._recvMessages)
|
|
292
253
|
}
|
|
293
254
|
|
|
294
|
-
Connection.prototype._reset = function () {
|
|
295
|
-
this._recvQueue = new FixedQueue()
|
|
296
|
-
this._sendQueue = new FixedQueue()
|
|
297
|
-
}
|
|
298
|
-
|
|
299
255
|
Connection.prototype._handleConnectionResponse = function (message) {
|
|
300
256
|
if (message.action === C.ACTIONS.PING) {
|
|
301
257
|
this._submit(messageBuilder.getMsg(C.TOPIC.CONNECTION, C.ACTIONS.PONG))
|
|
@@ -363,7 +319,6 @@ Connection.prototype._setState = function (state) {
|
|
|
363
319
|
this._client.emit(C.EVENT.CONNECTED, true)
|
|
364
320
|
} else if (state === C.CONNECTION_STATE.RECONNECTING || state === C.CONNECTION_STATE.CLOSED) {
|
|
365
321
|
this._client.emit(C.EVENT.CONNECTED, false)
|
|
366
|
-
this._reset()
|
|
367
322
|
}
|
|
368
323
|
}
|
|
369
324
|
|
|
@@ -162,10 +162,7 @@ class RecordHandler {
|
|
|
162
162
|
|
|
163
163
|
const token = xuid()
|
|
164
164
|
this._syncEmitter.once(token, resolve)
|
|
165
|
-
|
|
166
|
-
if (this._connected) {
|
|
167
|
-
this._connection.sendMsg(C.TOPIC.RECORD, C.ACTIONS.SYNC, [token])
|
|
168
|
-
}
|
|
165
|
+
this._connection.sendMsg(C.TOPIC.RECORD, C.ACTIONS.SYNC, [token])
|
|
169
166
|
}
|
|
170
167
|
|
|
171
168
|
for (const rec of this._pending) {
|
package/src/record/record.js
CHANGED
|
@@ -22,11 +22,9 @@ class Record {
|
|
|
22
22
|
this._updating = null
|
|
23
23
|
this._patching = null
|
|
24
24
|
this._pending = false
|
|
25
|
-
this._subscribed =
|
|
25
|
+
this._subscribed = this._sendMsg1(C.ACTIONS.SUBSCRIBE, this._name)
|
|
26
26
|
|
|
27
27
|
this._onPending(true)
|
|
28
|
-
|
|
29
|
-
this._subscribe()
|
|
30
28
|
}
|
|
31
29
|
|
|
32
30
|
get name() {
|
|
@@ -56,7 +54,7 @@ class Record {
|
|
|
56
54
|
}
|
|
57
55
|
|
|
58
56
|
if (!this._subscribed) {
|
|
59
|
-
this.
|
|
57
|
+
this._subscribed = this._sendMsg1(C.ACTIONS.SUBSCRIBE, this._name)
|
|
60
58
|
}
|
|
61
59
|
|
|
62
60
|
return this
|
|
@@ -235,13 +233,11 @@ class Record {
|
|
|
235
233
|
|
|
236
234
|
_$onConnectionStateChange(connected) {
|
|
237
235
|
if (connected) {
|
|
238
|
-
|
|
239
|
-
this._subscribe()
|
|
240
|
-
}
|
|
236
|
+
this._subscribed = this._refs > 0 && this._sendMsg1(C.ACTIONS.SUBSCRIBE, this._name)
|
|
241
237
|
|
|
242
238
|
if (this._updating) {
|
|
243
239
|
for (const update of this._updating.values()) {
|
|
244
|
-
this.
|
|
240
|
+
this._sendMsg1(C.ACTIONS.UPDATE, update)
|
|
245
241
|
}
|
|
246
242
|
}
|
|
247
243
|
} else {
|
|
@@ -258,29 +254,14 @@ class Record {
|
|
|
258
254
|
}
|
|
259
255
|
}
|
|
260
256
|
|
|
261
|
-
_subscribe() {
|
|
262
|
-
if (!this._handler._connection.connected) {
|
|
263
|
-
return
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
invariant(this._handler._connection.connected, 'must be connected')
|
|
267
|
-
|
|
268
|
-
this._handler._connection.sendMsg1(C.TOPIC.RECORD, C.ACTIONS.SUBSCRIBE, this._name)
|
|
269
|
-
this._subscribed = true
|
|
270
|
-
}
|
|
271
|
-
|
|
272
257
|
_$dispose() {
|
|
273
258
|
invariant(!this._refs, 'must not have refs')
|
|
274
259
|
invariant(!this._patching, 'must not have patches')
|
|
275
260
|
invariant(!this._updating, 'must not have updates')
|
|
276
261
|
invariant(!this._pending, 'must not be pending')
|
|
277
|
-
invariant(
|
|
278
|
-
!this._subscribed || this._handler._connection.connected,
|
|
279
|
-
'must be unsubscribed or connected'
|
|
280
|
-
)
|
|
281
262
|
|
|
282
263
|
if (this._subscribed) {
|
|
283
|
-
this.
|
|
264
|
+
this._sendMsg1(C.ACTIONS.UNSUBSCRIBE, this._name)
|
|
284
265
|
this._subscribed = false
|
|
285
266
|
}
|
|
286
267
|
|
|
@@ -293,6 +274,8 @@ class Record {
|
|
|
293
274
|
_update(nextData) {
|
|
294
275
|
invariant(this._version, 'must have version')
|
|
295
276
|
|
|
277
|
+
const connection = this._handler._connection
|
|
278
|
+
|
|
296
279
|
if (nextData === this._data) {
|
|
297
280
|
return
|
|
298
281
|
}
|
|
@@ -310,10 +293,7 @@ class Record {
|
|
|
310
293
|
this._updating.set(nextVersion, update)
|
|
311
294
|
this._handler._stats.updating += 1
|
|
312
295
|
|
|
313
|
-
|
|
314
|
-
if (connection.connected) {
|
|
315
|
-
connection.sendMsg(C.TOPIC.RECORD, C.ACTIONS.UPDATE, update)
|
|
316
|
-
}
|
|
296
|
+
connection.sendMsg(C.TOPIC.RECORD, C.ACTIONS.UPDATE, update)
|
|
317
297
|
|
|
318
298
|
this._data = nextData
|
|
319
299
|
this._version = nextVersion
|
|
@@ -404,6 +384,10 @@ class Record {
|
|
|
404
384
|
}
|
|
405
385
|
}
|
|
406
386
|
|
|
387
|
+
_sendMsg1(action, data) {
|
|
388
|
+
return this._handler._connection.sendMsg1(C.TOPIC.RECORD, action, data)
|
|
389
|
+
}
|
|
390
|
+
|
|
407
391
|
_error(event, msgOrError, data) {
|
|
408
392
|
this._handler._client._$onError(C.TOPIC.RECORD, event, msgOrError, [
|
|
409
393
|
...(Array.isArray(data) ? data : []),
|