An alternative to the default socket.io-parser, encoding and decoding packets with msgpack official latest javascript version msgpack-javascript
Please note that you MUST use the parser on both sides (server & client).
Compatibility table:
Parser version | Socket.IO server version |
---|---|
1.x.x | 3.x.x / 4.x.x |
npm i -S skgdev/socket.io-msgpack-javascript
Name | Type | Default |
---|---|---|
maxDepth | number | 100 |
initialBufferSize | number | 2048 |
sortKeys | boolean | false |
forceFloat32 | boolean | false |
forceIntegerToFloat | boolean | false |
ignoreUndefined | boolean | false |
ExtensionCodec context is not supported for now.
Name | Type | Default |
---|---|---|
maxStrLength | number | 4_294_967_295 (UINT32_MAX) |
maxBinLength | number | 4_294_967_295 (UINT32_MAX) |
maxArrayLength | number | 4_294_967_295 (UINT32_MAX) |
maxMapLength | number | 4_294_967_295 (UINT32_MAX) |
maxExtLength | number | 4_294_967_295 (UINT32_MAX) |
You can use max${Type}Length
to limit the length of each type decoded.
ExtensionCodec context is not supported for now.
const io = require('socket.io');
const ioc = require('socket.io-client');
const customParser = require('@skgdev/socket.io-msgpack-javascript');
const server = io(PORT, {
parser: customParser.build({
encoder: ?EncodeOptions,
decoder: ?DecodeOptions
})
});
const socket = ioc('ws://localhost:' + PORT, {
parser: customParser
});
socket.on('connect', () => {
socket.emit('hello');
});
socket.emit('hello', 'you')
will create the following packet:
{
"type": 2,
"nsp": "/",
"data": ["hello", "you"]
}
which will be encoded by the parser as:
<Buffer 83 a4 74 79 70 65 02 a3 6e 73 70 a1 2f a4 64 61 74 61 92 a5 68 65 6c 6c 6f a3 79 6f 75>