Skip to content

Commit bbe94ad

Browse files
feat: do not reuse the Engine.IO id
Related: socketio/socket.io@3b0cb11
1 parent 249e0be commit bbe94ad

File tree

8 files changed

+24
-79
lines changed

8 files changed

+24
-79
lines changed

build/manager.d.ts

-14
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,6 @@ export declare class Manager extends Emitter {
3535
* @api private
3636
*/
3737
emitAll(event: string, arg?: any): void;
38-
/**
39-
* Update `socket.id` of all sockets
40-
*
41-
* @api private
42-
*/
43-
updateSocketIds(): void;
44-
/**
45-
* generate `socket.id` for the given `nsp`
46-
*
47-
* @param {String} nsp
48-
* @return {String}
49-
* @api private
50-
*/
51-
generateId(nsp: any): string;
5238
/**
5339
* Sets the `reconnection` config.
5440
*

build/manager.js

-26
Original file line numberDiff line numberDiff line change
@@ -91,28 +91,6 @@ class Manager extends component_emitter_1.default {
9191
}
9292
}
9393
}
94-
/**
95-
* Update `socket.id` of all sockets
96-
*
97-
* @api private
98-
*/
99-
updateSocketIds() {
100-
for (let nsp in this.nsps) {
101-
if (has.call(this.nsps, nsp)) {
102-
this.nsps[nsp].id = this.generateId(nsp);
103-
}
104-
}
105-
}
106-
/**
107-
* generate `socket.id` for the given `nsp`
108-
*
109-
* @param {String} nsp
110-
* @return {String}
111-
* @api private
112-
*/
113-
generateId(nsp) {
114-
return (nsp === "/" ? "" : nsp + "#") + this.engine.id;
115-
}
11694
/**
11795
* Sets the `reconnection` config.
11896
*
@@ -386,9 +364,6 @@ class Manager extends component_emitter_1.default {
386364
this.nsps[nsp] = socket;
387365
var self = this;
388366
socket.on("connecting", onConnecting);
389-
socket.on("connect", function () {
390-
socket.id = self.generateId(nsp);
391-
});
392367
if (this.autoConnect) {
393368
// manually call here since connecting event is fired before listening
394369
onConnecting();
@@ -572,7 +547,6 @@ class Manager extends component_emitter_1.default {
572547
const attempt = this.backoff.attempts;
573548
this.reconnecting = false;
574549
this.backoff.reset();
575-
this.updateSocketIds();
576550
this.emitAll("reconnect", attempt);
577551
}
578552
}

build/socket.d.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ export declare class Socket extends Emitter {
100100
*
101101
* @api private
102102
*/
103-
onconnect(): void;
103+
onconnect(id: string): void;
104104
/**
105105
* Emit buffered events (received and emitted).
106106
*

build/socket.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,8 @@ class Socket extends component_emitter_1.default {
203203
return;
204204
switch (packet.type) {
205205
case socket_io_parser_1.PacketType.CONNECT:
206-
this.onconnect();
206+
const id = packet.data.sid;
207+
this.onconnect(id);
207208
break;
208209
case socket_io_parser_1.PacketType.EVENT:
209210
this.onevent(packet);
@@ -289,7 +290,8 @@ class Socket extends component_emitter_1.default {
289290
*
290291
* @api private
291292
*/
292-
onconnect() {
293+
onconnect(id) {
294+
this.id = id;
293295
this.connected = true;
294296
this.disconnected = false;
295297
this.emit("connect");

lib/manager.ts

-28
Original file line numberDiff line numberDiff line change
@@ -93,30 +93,6 @@ export class Manager extends Emitter {
9393
}
9494
}
9595

96-
/**
97-
* Update `socket.id` of all sockets
98-
*
99-
* @api private
100-
*/
101-
updateSocketIds() {
102-
for (let nsp in this.nsps) {
103-
if (has.call(this.nsps, nsp)) {
104-
this.nsps[nsp].id = this.generateId(nsp);
105-
}
106-
}
107-
}
108-
109-
/**
110-
* generate `socket.id` for the given `nsp`
111-
*
112-
* @param {String} nsp
113-
* @return {String}
114-
* @api private
115-
*/
116-
generateId(nsp) {
117-
return (nsp === "/" ? "" : nsp + "#") + this.engine.id;
118-
}
119-
12096
/**
12197
* Sets the `reconnection` config.
12298
*
@@ -417,9 +393,6 @@ export class Manager extends Emitter {
417393
this.nsps[nsp] = socket;
418394
var self = this;
419395
socket.on("connecting", onConnecting);
420-
socket.on("connect", function () {
421-
socket.id = self.generateId(nsp);
422-
});
423396

424397
if (this.autoConnect) {
425398
// manually call here since connecting event is fired before listening
@@ -618,7 +591,6 @@ export class Manager extends Emitter {
618591
const attempt = this.backoff.attempts;
619592
this.reconnecting = false;
620593
this.backoff.reset();
621-
this.updateSocketIds();
622594
this.emitAll("reconnect", attempt);
623595
}
624596
}

lib/socket.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,8 @@ export class Socket extends Emitter {
223223

224224
switch (packet.type) {
225225
case PacketType.CONNECT:
226-
this.onconnect();
226+
const id = packet.data.sid;
227+
this.onconnect(id);
227228
break;
228229

229230
case PacketType.EVENT:
@@ -319,7 +320,8 @@ export class Socket extends Emitter {
319320
*
320321
* @api private
321322
*/
322-
onconnect() {
323+
onconnect(id: string) {
324+
this.id = id;
323325
this.connected = true;
324326
this.disconnected = false;
325327
this.emit("connect");

test/socket.js

+7-4
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,22 @@ describe("socket", function () {
66

77
it("should have an accessible socket id equal to the server-side socket id (default namespace)", (done) => {
88
const socket = io({ forceNew: true });
9-
socket.on("connect", () => {
9+
10+
socket.emit("getId", (id) => {
1011
expect(socket.id).to.be.ok();
11-
expect(socket.id).to.eql(socket.io.engine.id);
12+
expect(socket.id).to.be.eql(id);
13+
expect(socket.id).to.not.eql(socket.io.engine.id);
1214
socket.disconnect();
1315
done();
1416
});
1517
});
1618

1719
it("should have an accessible socket id equal to the server-side socket id (custom namespace)", (done) => {
1820
const socket = io("/foo", { forceNew: true });
19-
socket.on("connect", () => {
21+
socket.emit("getId", (id) => {
2022
expect(socket.id).to.be.ok();
21-
expect(socket.id).to.eql("/foo#" + socket.io.engine.id);
23+
expect(socket.id).to.be.eql(id);
24+
expect(socket.id).to.not.eql(socket.io.engine.id);
2225
socket.disconnect();
2326
done();
2427
});

test/support/server.js

+8-2
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ const io = require("socket.io");
44
const server = io(process.env.ZUUL_PORT || 3210, { pingInterval: 2000 });
55
const expect = require("expect.js");
66

7-
server.of("/foo").on("connection", () => {
8-
// register namespace
7+
server.of("/foo").on("connection", (socket) => {
8+
socket.on("getId", (cb) => {
9+
cb(socket.id);
10+
});
911
});
1012

1113
server.of("/timeout_socket").on("connection", () => {
@@ -145,4 +147,8 @@ server.on("connection", (socket) => {
145147
socket.on("getHandshake", (cb) => {
146148
cb(socket.handshake);
147149
});
150+
151+
socket.on("getId", (cb) => {
152+
cb(socket.id);
153+
});
148154
});

0 commit comments

Comments
 (0)