Search…
2.3.5 解析器/协议差异
这只与用其他语言更新socket.io实现、自定义socket.io socket等相关。

差异1 - 数据包编码

解析现在是基于类和异步的。不是返回单个编码字符串,而是使用一个编码数组作为唯一参数对调用回调进行编码。每个编码都应该按顺序写入传输。这更灵活的让二进制数据传输,下面是一个例子:
1
const encoding= parser.encode(packet);
2
console.log(encoding); //完全编码的数据包
Copied!
VS:
1
const encoder= new parser.Encoder();
2
encoder.encode(packet,encodings=>{
3
for(let i=0;i<encodings.length;i++){
4
console.log(encodings[i]) //包的编码部分
5
}
6
})
Copied!

差异2 - 数据包解码

解码将使事情进一步发展,并且是基于事件的。这是因为某些对象(包含二进制)同时在多个部分中进行编码和解码。这个例子应该有助于理解:
1
const packet= parser.decode(decoding);
2
console.log(packet) // 要处理的成型socket.io包
Copied!
VS:
1
const decoder= new parser.Decoder();
2
decoder.on('decoded',(packet)=>{
3
console.log(packet) // 要处理的成型socket.io包
4
})
5
6
decoder.add(encodings[0]) // encodings 是从传输接收的两个编码的数组
7
decoder.add(encodings[1]) // 添加最后一个元素后,解码器将发出“decoded”
Copied!
Last modified 2yr ago