Skip to content

Commit a33e42b

Browse files
fix: restore compatibility with binary parsers
Related: 5579d40
1 parent 36d0acf commit a33e42b

File tree

3 files changed

+31
-12
lines changed

3 files changed

+31
-12
lines changed

lib/index.ts

+13-8
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ export class Adapter extends EventEmitter {
126126
*/
127127
public broadcast(packet: any, opts: BroadcastOptions): void {
128128
const flags = opts.flags || {};
129-
const packetOpts = {
129+
const basePacketOpts = {
130130
preEncoded: true,
131131
volatile: flags.volatile,
132132
compress: flags.compress
@@ -135,15 +135,20 @@ export class Adapter extends EventEmitter {
135135
packet.nsp = this.nsp.name;
136136
const encodedPackets = this.encoder.encode(packet);
137137

138-
const firstPacketOpts = {
139-
wsPreEncoded: "4" + encodedPackets[0], // "4" being the "message" packet type in Engine.IO
140-
...packetOpts
141-
};
138+
const packetOpts = encodedPackets.map(encodedPacket => {
139+
if (typeof encodedPacket === "string") {
140+
return {
141+
...basePacketOpts,
142+
wsPreEncoded: "4" + encodedPacket // "4" being the "message" packet type in Engine.IO
143+
};
144+
} else {
145+
return basePacketOpts;
146+
}
147+
});
142148

143149
this.apply(opts, socket => {
144-
socket.client.writeToEngine(encodedPackets[0], firstPacketOpts);
145-
for (let i = 1; i < encodedPackets.length; i++) {
146-
socket.client.writeToEngine(encodedPackets[i], packetOpts);
150+
for (let i = 0; i < encodedPackets.length; i++) {
151+
socket.client.writeToEngine(encodedPackets[i], packetOpts[i]);
147152
}
148153
});
149154
}

package-lock.json

+8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/index.js

+10-4
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,10 @@ describe("socket.io-adapter", () => {
6666
{
6767
id,
6868
client: {
69-
writeToEngine() {
69+
writeToEngine(payload, opts) {
70+
expect(payload).to.eql("123");
71+
expect(opts.preEncoded).to.eql(true);
72+
expect(opts.wsPreEncoded).to.eql("4123");
7073
ids.push(id);
7174
}
7275
}
@@ -77,7 +80,7 @@ describe("socket.io-adapter", () => {
7780
server: {
7881
encoder: {
7982
encode() {
80-
return [];
83+
return ["123"];
8184
}
8285
}
8386
},
@@ -103,7 +106,10 @@ describe("socket.io-adapter", () => {
103106
{
104107
id,
105108
client: {
106-
writeToEngine() {
109+
writeToEngine(payload, opts) {
110+
expect(payload).to.be.a(Buffer);
111+
expect(opts.preEncoded).to.eql(true);
112+
expect(opts.wsPreEncoded).to.be(undefined);
107113
ids.push(id);
108114
}
109115
}
@@ -114,7 +120,7 @@ describe("socket.io-adapter", () => {
114120
server: {
115121
encoder: {
116122
encode() {
117-
return [];
123+
return [Buffer.from([1, 2, 3])];
118124
}
119125
}
120126
},

0 commit comments

Comments
 (0)