一个使用websocket技术的实例
之前「17CE」网址:http://www.17ce.com 测速使用 ajax 轮询需要多个 http 请求才能获取测速结果,现在测速发现快了很多,查看网络请求发现使用了 websocket 请求,只需要一次 websocket 请求就可以获取结果。
使用 ajax 轮询:

共有 15 个请求
使用 websocket:

共有 5 个请求

ajax 轮询在不断地建立 http 连接,然后等待服务端处理,非常被动, 服务器也不能主动地发送消息给客户端。http 的每一次请求与响应结束后,服务器将客户端信息全部丢弃,下次请求,必须携带身份信息(cookie),非常费时。使用 websocket 建立一次链接就可以了,服务器和客户端可以互相发信息。
查看网页代码看是如何实现的:
1.首先加载js文件定义websocket对象:
js文件:https://www.17ce.com/smedia/js/ws.min.js?ver=20180613
2.使用websocket获取测速结果推送
1 | // 点击测速时会调用ajax_check() |
服务端(PHP)websocket实现方案
「Workerman」https://github.com/walkor/workerman
「Swoole」https://github.com/swoole/swoole-src
