性能优化篇:用WebSocket替代传统的http轮循

1,399 阅读3分钟

当我还是初级菜鸟时,我只会写定时器定时调用接口,发起http请求,定时轮训请求接口,返回最新数据,定时器开启的多了还会引起页面卡顿的性能问题,虽然及时销了但还是会影响流畅问题。然后技术leader一声令下说改成websoket的请求方式,为什么这么做呢?下面来谈谈WebSocket相较于传统的HTTP轮询(polling)有哪些显著的优点,特别是在实时通信和高效资源利用方面。以下是WebSocket的主要优点及其对比分析:

WebSocket的主要优点

  1. 全双工通信

    • WebSocket允许客户端和服务器之间的双向通信,即客户端和服务器都可以在任何时候主动发送消息。这与HTTP轮询的单向请求-响应模型相比,更加高效和实时。
  2. 低延迟

    • WebSocket连接一旦建立,客户端和服务器之间可以实时交换数据,无需等待客户端发起请求。相比之下,HTTP轮询需要客户端定期发送请求来检查是否有新数据,这会导致一定的延迟。
  3. 减少网络开销

    • WebSocket连接建立后,客户端和服务器之间的数据交换只需很少的头信息(header),这大大减少了每次通信的数据开销。而HTTP轮询每次请求都需要完整的HTTP头信息,增加了网络负担。
  4. 持久连接

    • WebSocket在建立连接后保持连接状态,不需要像HTTP轮询那样频繁建立和断开连接。这样不仅节省了连接的建立和拆除的资源消耗,还能更有效地管理连接状态。
  5. 高效资源利用

    • WebSocket连接保持活跃,使得服务器可以主动推送数据到客户端,从而在有新数据时立即通知客户端,避免了轮询方式下大量无效请求的资源浪费。
  6. 支持多种数据格式

    • WebSocket可以发送文本和二进制数据,适应更多样化的应用需求,而HTTP轮询主要传输文本数据。

WebSocket和传统http轮循具体对比

特性WebSocketHTTP轮询
通信模式全双工单向请求-响应
延迟高(取决于轮询间隔)
网络开销低(数据头信息少)高(每次请求有完整的HTTP头信息)
连接管理持久连接频繁建立和关闭连接
实时性低(取决于轮询频率)
数据格式文本和二进制主要是文本数据
资源利用高效(只有有用数据的通信)低效(大量无效请求)

WebSocket典型应用场景

  1. 实时聊天应用

    • 需要双向即时消息传递的应用,例如即时通讯工具。
  2. 在线游戏

    • 需要低延迟、实时数据同步的应用,例如多人在线游戏。
  3. 实时通知系统

    • 需要服务器主动推送通知的应用,例如股票价格更新、新闻推送等。
  4. 协作工具

    • 需要实时同步编辑内容的应用,例如在线文档协作工具。
  5. 实时数据仪表盘

    • 需要实时更新显示数据的应用,例如监控系统、数据分析仪表盘等。

总结

WebSocket在需要高效实时通信的应用场景中,比传统的HTTP轮询具有明显的优势。它提供了低延迟、全双工通信、减少网络开销和高效资源利用等优点,使得客户端和服务器之间的数据交换更加高效和实时。因此,WebSocket是现代Web应用,尤其是那些需要实时数据传输的应用中的重要技术。所以,别再傻傻的还去用定时器开启http轮循了,技术升级一下吧!