Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js io优化:Socket.io是否发送JSON字符串?我们如何优化这一点?_Node.js_Websocket_Socket.io - Fatal编程技术网

Node.js io优化:Socket.io是否发送JSON字符串?我们如何优化这一点?

Node.js io优化:Socket.io是否发送JSON字符串?我们如何优化这一点?,node.js,websocket,socket.io,Node.js,Websocket,Socket.io,根据这个问题:(),您可以通过将数据转换为JSON字符串并查找其长度来粗略计算数据包的大小 例如,这难道不意味着数字12345678占用的字节数与字符串“12345678”的字节数相同,即使一个是字符串,一个是数字 此外,这是否意味着舍入数字会减少大小?因此,您可以发送3.5而不是3.49362627 减少属性标记的长度是否也会提高大小?您可以{w:4}而不是:{width:4} 感谢您帮助理解socket.io发送的数据包的大小。欢迎使用任何其他通用优化技巧。Socket.io序列化/反序列化

根据这个问题:(),您可以通过将数据转换为JSON字符串并查找其长度来粗略计算数据包的大小

例如,这难道不意味着数字12345678占用的字节数与字符串“12345678”的字节数相同,即使一个是字符串,一个是数字

此外,这是否意味着舍入数字会减少大小?因此,您可以发送3.5而不是3.49362627

减少属性标记的长度是否也会提高大小?您可以{w:4}而不是:{width:4}


感谢您帮助理解socket.io发送的数据包的大小。欢迎使用任何其他通用优化技巧。

Socket.io序列化/反序列化由
JSON.stringify()
/
JSON.parse()
执行。在这个过程中,一切都变成了字符串。因此,如果您想最小化数据包大小(例如使用
toFixed
),您最好将数字格式化为较小的字符串。请注意,在JSON格式中,在字符串周围添加了双引号
,这使字符串长了2个字节

另一个后果是:对象的函数在序列化过程中丢失

优化提示:

  • 通常,重新计算数据(例如解压)比移动数据(网络、磁盘等)更有效。因此,您的方法是有效的

  • 在优化之前一定要衡量性能。你经常会惊讶于“优化”只会让你的性能更差


  • 还要注意的是
    JSON.stringify
    调用对象的
    toJSON
    函数。

    在此基础上,我找到了一些愚蠢的方法来发送更少的字节!1)使用1和0,而不是true和false。2)在服务器端,不发送任何对象。只需发送数组,并让客户端使用元素顺序将其解析为对象。