WebSocket通讯

WebSocket

WebSocket的出现,使浏览器具备了双向通信的能力。HTML5开始提供的一种浏览器与服务器进行全双工通讯的网络技术,属于应用层协议。它基于TCP传输协议,并复用HTTP的握手通道。

  • 主要特点

    • WebSocket可以在浏览器中使用
    • 支持双向通讯
    • 使用简单
  • 有哪些优点
    说到有点,先找个比较物,HTTP协议,概括的说:支持双向通讯,更灵活,更高效,可扩展性更好

    看到双工通讯,有小伙伴可能会想到Http 长连接,认为那个也是可以双工通讯,这个是有点不一样的。 HTTP长连接指的是: HTTP发送请求时,首先创建一个TCP连接,并在TCP连接上把HTTP请求的内容发送并接收返回,这就是一次请求完成。在这个过程中,浏览器可以与服务器进行协商是否关闭TCP连接 ,也是就HTTP请求头里的 Connection:keep-alive , 若不关闭TCP连接就会有一定的消耗,好处是如果还有请求可以直接在这个TCP连接上发送,不需要经过创建时的三次握手的消耗。
    HTTP1.1和 HTTP2的区别:
    - Http 1.1 中 请求在TCP进行发送有先后顺序,为了提高性能,需要使用并发TCP连接的方式
    - HTTP2 中可以在一个TCP连接上并发的发送HTTP请求,所以只需要开一个TCP连接

  • 需要学习哪些东西
    对于网络应用层协议的学习来说,最重要的往往就是连接建立过程、数据交换过程,当然,数据的格式的逃不掉的,因为它直接决定了协议本身的能力。好的数据格式能让协议更高效,扩展性更好。

    接下来将从以下几点来展开:

    • 如何建立连接
      WebSocket复用了HTTP的握手通道,具体指的是,客户端通过HTTP请求与WebSocket服务端协商升级协议。协议升级完成后,后续的数据交换则遵照WebSocket的协议。

      • 客户端:申请协议升级(带一个sec-web-websocket-key)
      • 服务端:相应协议升级 (带一个匹配的 sec-websocket-key)
      • 后续使用新的协议方式进行通讯
    • 如何交换数据
      数据格式: 32位,包括了标识、操作代码、掩码、数据、数据长度等

    • 数据帧格式

    • 如何维持连接
      webSocket 为了保持客户端、服务端的实时双向通信,需要确保客户端、服务端之间的TCP通道保持没有断开。 然而,对于长时间没有数据往来的连接,如果依旧长时间保持着,可能会浪费保持的连接资源,因此这时候需要采用心跳来进行监测。

      • 采用心跳实现
        • 发送方 -> 接收方: ping
        • 接收方 -> 发送方: pong
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值