@jcbuisson/express-x-plugins 4.0.12 → 4.0.13
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
CHANGED
|
@@ -74,7 +74,7 @@ export async function reloadPlugin(app, options = {}) {
|
|
|
74
74
|
// copy rooms
|
|
75
75
|
for (const room of fromSocketRooms) {
|
|
76
76
|
if (room === fromSocketId) continue // do not include room associated to socket#id
|
|
77
|
-
toSocket.join(room)
|
|
77
|
+
await toSocket.join(room)
|
|
78
78
|
}
|
|
79
79
|
// copy data
|
|
80
80
|
toSocket.data = {
|
|
@@ -12,11 +12,15 @@ class FakeSocket {
|
|
|
12
12
|
this.emitted = []
|
|
13
13
|
this.sockets = sockets
|
|
14
14
|
this.disconnectingListener = disconnectingListener
|
|
15
|
+
this.joinDelay = Promise.resolve()
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
on(event, handler) { this.handlers.set(event, handler) }
|
|
18
19
|
emit(event, ...args) { this.emitted.push([event, ...args]) }
|
|
19
|
-
join(room) {
|
|
20
|
+
async join(room) {
|
|
21
|
+
await this.joinDelay
|
|
22
|
+
this.rooms.add(room)
|
|
23
|
+
}
|
|
20
24
|
disconnect() {
|
|
21
25
|
this.disconnectingListener(this, 'server namespace disconnect')
|
|
22
26
|
this.sockets.delete(this.id)
|
|
@@ -46,9 +50,16 @@ test('transfers state when the replacement connects before the old socket discon
|
|
|
46
50
|
const transferToken = oldSocket.emitted.find(([event]) => event === 'cnx-transfer-token')[1]
|
|
47
51
|
|
|
48
52
|
const newSocket = new FakeSocket('new', sockets, (...args) => disconnectingListener(...args))
|
|
53
|
+
let finishJoin
|
|
54
|
+
newSocket.joinDelay = new Promise(resolve => { finishJoin = resolve })
|
|
49
55
|
sockets.set(newSocket.id, newSocket)
|
|
50
56
|
connectListener(newSocket)
|
|
51
|
-
|
|
57
|
+
const transfer = newSocket.handlers.get('cnx-transfer')('old', 'new', transferToken)
|
|
58
|
+
|
|
59
|
+
await Promise.resolve()
|
|
60
|
+
assert.equal(newSocket.emitted.some(([event]) => event === 'cnx-transfer-ack'), false)
|
|
61
|
+
finishJoin()
|
|
62
|
+
await transfer
|
|
52
63
|
|
|
53
64
|
assert.equal(newSocket.data.user, 'Ada')
|
|
54
65
|
assert.equal(newSocket.rooms.has('project:1'), true)
|