weixin_39929566
weixin_39929566
2020-12-27 22:40

socket 和 http(s) 代理性能分析

从两个维度进行分析

请求方式

  • 使用 socket 的方式,所有的数据都从这一个通道进行传输
  • 使用 http 的方式,每个请求都建立一个连接

socket 模块的选择

如果没有意外,还是倾向于用 socket.io - https://github.com/LearnBoost/socket.io - https://github.com/turn/json-over-tcp/ - https://github.com/Worlize/WebSocket-Node

该提问来源于开源项目:totorojs/totoro

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

7条回答

  • weixin_39929566 weixin_39929566 4月前

    32ff04f8335b1e5144bf67827a378c43

    本地测试结果, tcp-over-json 和 socket.io 相差不是很多, 但是稍微好点呀.

    点赞 评论 复制链接分享
  • weixin_39929566 weixin_39929566 4月前

    看来 socket 这种方式还是只适合小数据的传输, 比如聊天室啥的. 对于这种大数据的传输, 还是不太适合啊.

    点赞 评论 复制链接分享
  • weixin_39716703 weixin_39716703 4月前

    太不公平了,你要和 http 对比就要用 net 库呀。

     js
    var http = require('http')
    var net = require('net')
    
    点赞 评论 复制链接分享
  • weixin_39929566 weixin_39929566 4月前

    因为不是简单的传输数据, 需要对传输数据识别,分组啥的, 如果用 net 的话, 还是需要做好多处理, 所以首先用已有的模块来测试下. json-over-tcp 看来已经是很精简了. 下一步在看看是否还有优化的余地.

    点赞 评论 复制链接分享
  • weixin_39717110 weixin_39717110 4月前

    见:https://github.com/totorojs/totoro-server/commit/5046772b82ed51e2a5a6ee2f8d3342d95a432a6d

    点赞 评论 复制链接分享
  • weixin_39929566 weixin_39929566 4月前

    b639f5201b0a14c650df9c2632d396d6

    目前 http 的方式,完胜. 后续在看看 socket.io 是否有想关参数设置, 还有其他 socket 的方式.

    点赞 评论 复制链接分享
  • weixin_39929566 weixin_39929566 4月前

    请求方式分析用例: 1. 客户端准备10个大文件 2. 服务器端分别通过 http 和 socket 的方式获取所有数据 3. 记录各自消耗的时间

    点赞 评论 复制链接分享

相关推荐