【问题标题】:Socket.io optimization: Does socket.io send a string of the JSON? How can we optimize that?Socket.io 优化:socket.io 是否发送 JSON 字符串?我们如何优化它?
【发布时间】:2018-04-30 23:41:16
【问题描述】:

根据这个问题:(Socket.io: How to limit the size of emitted data from client to the websocket server),你可以通过将数据转成JSON字符串并求其长度,粗略计算出数据包的大小。

这是否意味着,例如,数字 12345678 占用的字节数与字符串“12345678”一样多,即使一个是字符串而一个是数字?

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

减少属性标签的长度也会提高大小吗?你可以用 {w: 4} 代替:{width: 4}。

感谢您帮助了解 socket.io 发送的数据包大小。任何其他一般优化技巧都值得赞赏。

【问题讨论】:

    标签: node.js websocket socket.io


    【解决方案1】:

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

    另一个后果:对象的功能在序列化的过程中丢失了。

    优化提示:

    1. 重新计算数据(例如解压缩)通常比移动数据(网络、磁盘等)更有效。所以你的方法是有效的。

    2. 始终在优化之前测量性能。您经常会惊讶于“优化”只会让您的性能变差。

    另请注意,JSON.stringify 调用对象的 toJSON 函数。

    【讨论】:

    • 在此基础上,我发现了一些发送更少字节的愚蠢方法! 1)用1和0代替真假。 2)在服务器端,不要发送任何对象。只需发送数组,并让客户端使用元素的顺序将其解析为对象。
    猜你喜欢
    • 1970-01-01
    • 2017-02-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 2011-08-20
    • 2019-12-04
    • 2011-05-16
    • 2014-06-28
    相关资源
    最近更新 更多