websocket简述

来源:互联网 发布:犀牛软件图标 编辑:程序博客网 时间:2024/05/19 13:57

websocket概念梳理

一、实时web应用

  1. 保持客户端和服务器端的信息同步是实时 Web 应用的关键要素。
  2. WebSocket 规范出来之前,开发人员想实现这些实时的 Web 应用,其中最常用的就是轮询 (Polling) 和 Comet 技术。
  3. Comet 技术实际上是轮询技术的改进,分为两种实现方式,一种是长轮询机制,一种称为流技术。
  4. 轮询: 客户端以固定频率向服务器端发送请求,以频繁的请求方式保证两端数据一致。
    缺点:频繁的请求,增加网络传输成本,低效。
  5. 长轮询: 当服务器端数据没有改变时,保持连接状态直到数据更新或连接时间周期结束。
    优点: 降低无效的网络传输。
  6. 流: 在客户端中创建一个隐藏窗口,用于向服务器端发生一个长连接。服务器端接到请求后,作出响应,并不断更新数据保证两端的连接有效。缺点: 高并发的情况下,十分消耗服务器资源。
  7. 两种技术本质: 都是模拟实时web,利用ajax技术模拟实时效果,两端的每一次交互都是http的请求与响应的过程。往往开发者需要客户端与服务器之间进行双向通信,这就需要建立两条http连接。无疑,这种方式增加了开发的复杂度以及开发成本。

二、Websocket技术与node关系

  1. HTML5 WebSocket 设计出来的目的就是要取代轮询和 Comet 技术,本质上还是一种持久化的协议(基于tcp协议),相对于Http协议这种非持久化协议的补充。
  2. WebSocket 原理: 通过客户端向服务器端发送一条类似于http的请求(区别在于附加的请求头,Upgrade: WebSocket ),说明是发送的是一条WebSocket 请求。服务端解析这种请求并做出响应,两端就建立起websocket连接,双方就可以实时通信。
  3. 实际开发中,为了解决相应的WebSocket 请求,就必须有对应的websocket服务器进行处理,而javascript提供了一种解决方案,nodejs。一种服务器端的js框架处理WebSocket 请求。

三、websocket局限性

websocket的兼容性问题,IE对其的支持性问题。


未完待续。。。