美文网首页
使用WebSocket进行全双工通信

使用WebSocket进行全双工通信

作者: 乔治大叔 | 来源:发表于2020-06-14 22:42 被阅读0次

一、WebSocket简介

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。

二、WebSocket 通信原理

为了实现 WebSocket 通信,在 HTTP 连接建立之后,需要完成一 次“握手”(Handshaking)的步骤。

握手·请求

为了实现 WebSocket 通信,需要用到 HTTP 的 Upgrade 首部字 段,告知服务器通信协议发生改变,以达到握手的目的。

请求.jpg

Sec-WebSocket-Key 字段内记录着握手过程中必不可少的键值。 Sec-WebSocket-Protocol 字段内记录使用的子协议。 子协议按 WebSocket 协议标准在连接分开使用时,定义那些连接 的名称。

177 握手·响应

对于之前的请求,返回状态码 101 Switching Protocols 的响应。

响应.jpg

Sec-WebSocket-Accept 的字段值是由握手请求中的 SecWebSocket-Key 的字段值生成的。 成功握手确立 WebSocket 连接之后,通信时不再使用 HTTP 的数 据帧,而采用 WebSocket 独立的数据帧。

成功握手确立 WebSocket 连接之后,通信时不再使用 HTTP 的数 据帧,而采用 WebSocket 独立的数据帧。

通信原理图.jpg

JavaScript 可调用“The WebSocket API”,以下为调用 WebSocket API,每 50ms 发送一次数据的实例。

var socket = new WebSocket('ws://game.example.com:12010/updates');
socket.onopen = function () { 
    setInterval(function() { 
        if (socket.bufferedAmount == 0) 
            socket.send(getUpdateData()); 
    }, 50); 
};

相关文章

  • 使用WebSocket进行全双工通信

    一、WebSocket简介 WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯...

  • websocket学习

    websocket的定义 WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协...

  • 2.WebSocket

    WebSocket简介 WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议...

  • WebSocket

    WebSocket简介 WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议...

  • websocket

    WebSocket简介 WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议...

  • 聊天功能

    了解webscoket WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议...

  • SpringBoot Websocket 实战

    什么是Websocket Websocket 是一种在单个TCP连接上进行全双工通信的协议。WebSocket连接...

  • Websocket协议

    WebSocket是一种在单个TCP传输控制协议连接上进行全双工全双工通信的协议。WebSocket使得客户端和服...

  • 使用Websocket

    WebSocket是一种在单个TCP传输控制协议连接上进行全双工全双工通信的协议。WebSocket使得客户端和服...

  • Websocket协议

    WebSocket是一种在单个TCP传输控制协议连接上进行全双工全双工通信的协议。WebSocket使得客户端和服...

网友评论

      本文标题:使用WebSocket进行全双工通信

      本文链接:https://www.haomeiwen.com/subject/kewrbctx.html