MCPcopy
hub / github.com/socketio/socket.io / createPacketEncoderStream

Function createPacketEncoderStream

packages/engine.io-parser/lib/index.ts:49–79  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

47};
48
49export function createPacketEncoderStream(): any {
50 return new TransformStream({
51 transform(packet: Packet, controller) {
52 encodePacketToBinary(packet, (encodedPacket) => {
53 const payloadLength = encodedPacket.length;
54 let header;
55 // inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length
56 if (payloadLength < 126) {
57 header = new Uint8Array(1);
58 new DataView(header.buffer).setUint8(0, payloadLength);
59 } else if (payloadLength < 65536) {
60 header = new Uint8Array(3);
61 const view = new DataView(header.buffer);
62 view.setUint8(0, 126);
63 view.setUint16(1, payloadLength);
64 } else {
65 header = new Uint8Array(9);
66 const view = new DataView(header.buffer);
67 view.setUint8(0, 127);
68 view.setBigUint64(1, BigInt(payloadLength));
69 }
70 // first bit indicates whether the payload is plain text (0) or binary (1)
71 if (packet.data && typeof packet.data !== "string") {
72 header[0] |= 0x80;
73 }
74 controller.enqueue(header);
75 controller.enqueue(encodedPacket);
76 });
77 },
78 });
79}
80
81let TEXT_DECODER;
82

Callers 5

doOpenMethod · 0.90
constructorMethod · 0.90
index.tsFile · 0.50
browser.tsFile · 0.50
node.tsFile · 0.50

Calls

no outgoing calls

Tested by

no test coverage detected