socket.io parser based on msgpack
npm install @skgdev/socket.io-msgpack-javascriptAn 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 | 1002048
initialBufferSize | number |
sortKeys | boolean | false
forceFloat32 | boolean | false
forceIntegerToFloat | boolean | false
ignoreUndefined | boolean | false
See:
- msgpack EncodeOptions
- ExtensionCodec context
Name|Type|Default
----|----|----
maxStrLength | number | 4_294_967_295 (UINT32_MAX)4_294_967_295
maxBinLength | number | (UINT32_MAX)4_294_967_295
maxArrayLength | number | (UINT32_MAX)4_294_967_295
maxMapLength | number | (UINT32_MAX)4_294_967_295
maxExtLength | number | (UINT32_MAX)
You can use max${Type}Length to limit the length of each type decoded.
See:
- msgpack DecodeOptions
- ExtensionCodec context
js
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');
});
`$3
socket.emit('hello', 'you') will create the following packet:`json
{
"type": 2,
"nsp": "/",
"data": ["hello", "you"]
}
`which will be encoded by the parser as: