我在尝试使用websockets时减少socket.io
带宽。我切换到二进制数据,但查看浏览器开发人员控制台,数据包将按以下方式发送:
[ 'type of the packet (first argument of .emit)', associated data ]
我只使用一种数据包类型,因此这会导致不必要的开销 - 发送无用的字节,并且无缘无故地对整个事件进行json编码。
如何摆脱数据包类型并只发送原始数据?
答案 0 :(得分:2)
socket.io
是webSocket
之上的抽象。为了支持它提供的功能,它增加了消息的一些开销。消息名称就是这样一个开销,因为它是一个消息系统,而不仅仅是一个数据包传送系统。
如果你想从传输中挤出所有字节,那么你可能需要摆脱socket.io
并只使用一个普通的webSocket来控制每个数据包的更多内容(尽管你必须重新实现socket.io为你做的一些事情。)
使用node.js中的socket.io,您可以通过发送ArrayBuffer或Buffer来发送二进制文件。在浏览器中,您可以通过发送ArrayBuffer或Blob来发送二进制文件。