Javascript 正在发送Socket.io额外占位符帧
以下代码生成神秘的第三帧:Javascript 正在发送Socket.io额外占位符帧,javascript,sockets,websocket,socket.io,network-programming,Javascript,Sockets,Websocket,Socket.io,Network Programming,以下代码生成神秘的第三帧: 451-[“clientMsg”,“{u占位符”:true,“num”:0}] 古董 服务器 客户 上面的代码产生了三个帧,我希望只有两个帧,一个从客户端到服务器,一个从服务器到客户端。有人能解释第三个框架是什么,以及如何摆脱它吗?请参见屏幕截图: 查看socket.io的代码,它看起来就像任何时候有一个包含二进制数据的对象,它都会用这个占位符事件替换该部分对象。然后,它按照提供的“num”字段的顺序发送二进制数据,并在客户端重新构造 由于只有一个对象要为事件“cli
451-[“clientMsg”,“{u占位符”:true,“num”:0}]
古董
服务器
客户
上面的代码产生了三个帧,我希望只有两个帧,一个从客户端到服务器,一个从服务器到客户端。有人能解释第三个框架是什么,以及如何摆脱它吗?请参见屏幕截图:
查看socket.io的代码,它看起来就像任何时候有一个包含二进制数据的对象,它都会用这个占位符事件替换该部分对象。然后,它按照提供的“num”字段的顺序发送二进制数据,并在客户端重新构造 由于只有一个对象要为事件“clientMsg”发送,因此它会将占位符对象作为整个正文发送事件,并带有二进制数据的后续内容 请参阅socket.io解析器的binary.js:-特别是
\u deconstructPacket
和\u recostructPacket
函数
不幸的是,我还意识到添加二进制代码的开销相当大,除了代码之外,我找不到其他文档。这方面有什么进展吗?是的,socket.IO就是这样将二进制消息映射到服务器上的on(message)事件的。这对我们来说开销很大,所以我们在服务器上切换到WebSocket(ws),在客户端切换到本机WebSocket。我们还使用schemapack发送二进制数据,这使得二进制消息的编码、解码和路由非常容易:有趣的@JaredSprague由于易于集成,我们默认使用msgpack lite,但我现在将查看schemapack,谢谢。至于减少开销,我们正在研究webrtc,因为浏览器中可能存在udp风格的不可靠消息传递
function sendMessage() {
var bufArr = new ArrayBuffer(4);
var bufView = new Uint8Array(bufArr);
bufView[0]=6;
bufView[1]=7;
bufView[2]=8;
bufView[3]=9;
// send binary message to server
socket.emit('serverMsg', bufArr);
}
sendMessage();
socket.on('serverMsg', function (bufArr) {
var ba = new ArrayBuffer(4);
var bv = new Uint8Array(ba);
bv[0]=10;
bv[1]=11;
bv[2]=12;
bv[3]=13;
var bufView = new Uint8Array(bufArr);
console.log("Data: ", bufView[0], bufView[1], bufView[2], bufView[3]);
// Send message back to client
socket.emit("clientMsg", ba);
});
socket.on('clientMsg', function (bufArr) {
var bufView = new Uint8Array(bufArr);
console.log("Data: ", bufView[0], bufView[1], bufView[2], bufView[3])
});