背景
工作上需要做一个实时投票系统,因此想到利用 websocket 做数据推送,而后台采用 nodejs 因为需要快速搭建完成该项工作,最终查找到 socket.io 这个 node 库。
而我开发工作一直集中在后台身份验证和前端页面的图表展示,对于 socket.io 本身没有太过关注内部实现,唯一一次关注是在 ios 4.x 系统接收不到 socket.io 的推送是查了一下,后发现 ios 系统版本太低的微信扫码出来的页面对 socket.io 不支持,而安卓没有问题,当时认为是因为 ios 的微信页面是基于 safari ,而低版本的 safari 对 HTML5 支持不好,而安卓版的微信是腾讯内建的 QQ 浏览器,对于 H5 或者其他 js 的支持优化比较好。
这一次的问题
这一次因为领导让一个运维做一下这个 nodejs 服务器的压力测试,过程我注意到 socket.io 的数据传递怎么没有走 websocket ?而一次连接有好几次的 http 请求,并且数据走了 http 的 get/post 请求。
一次请求里有 1 个 ws 连接和 3 个甚至更多的 HTTP 连接