资讯专栏INFORMATION COLUMN

websocket 原理

asoren / 1282人阅读

摘要:注意实际上指的是一种协议,与我们熟知的协议是同等的一个网络协议。协议与的联系是指的一系列新的,或者说新规范,新技术。注意下面的请求报文与响应报文中的内容不是完整的报文,而是基于请求响应报文添加的内容。

背景

以前的网站为了实现推送功能,使用的方法都是轮询。所谓的轮询就是在特定的时间间隔(例如1秒),由浏览器向服务器发出一个 Http request,然后服务器返回最新的数据给客户端浏览器,从而给出一种服务端实时推送的假象。由于Http Request的Header(请求头)很长,而传输的数据可能很短就只占一点点,每次请求消耗的带宽大部分都消耗在 Header上。从网上资料得知后来还有改进的轮询方法叫做 Comet,使用 Ajax。但这种技术虽然可达到双向通信,但依然需要发出请求,而且在Comet中,普遍采用了长链接,这也会大量消耗服务器带宽和资源。

所以HTML5定义了 WebSocket 协议,以及相关的编程API,能更好的实现双向通信且节省服务器资源和带宽。

注意: WebSocket 实际上指的是一种协议,与我们熟知的 Http 协议是同等的一个网络协议。用网络模型结构来解释的话, WebSocket 和 Http 协议都属于 应用层协议,两者都基于传输层协议 TCP。

WebSocket 协议

与HTML5的联系
Html5是指的一系列新的API,或者说新规范,新技术。在这个新规范中定义了一个为了实现双向实时通信的新协议 WebSocket,并且提供了一套 JavaScript API 供开发者来调用实现通信。服务器端的实现由诸如:Tomcat、Jetty等等。

与Http协议的联系
简单概括来看: WebSocket 不是 Http 协议, Http 协议只是被 WebSocket 使用来建立 WebSocket 连接,连接建立了以后客户端与服务器的双向通信就与 Http 无关了。

WebSocket 协议和 HTTP 协议是两种不同的东西,它们的联系如下:

客户端开始建立 WebSocket 连接时要发送一个 header 标记了 Upgrade 的 HTTP 请求,表示请求协议升级。所以服务器端做出响应的简便方法是,直接在现有的 HTTP 服务器软件和现有的端口上实现 WebSocket 协议,重用现有代码(比如解析和认证这个 HTTP 请求。如果在 TCP 协议上实现,这两个功能就要重新实现),然后再回一个状态码为 101 的 HTTP 响应完成握手,再往后发送数据时就没 HTTP 的事了。

**例子**
下面给出发出建立连接请求时的 request 和 response。

注意:下面的请求报文与响应报文中的内容不是完整的报文,而是 WebSocket 基于 Http 请求(响应)报文添加的内容。

浏览器请求

GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: example.com
Origin: null
Sec-WebSocket-Key: sN9cRrP/n9NdMgdcy2VJFQ==
Sec-WebSocket-Version: 13

服务器回应

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: fFBooB7FAkLlXgRSz0BT3v4hq5s=
Sec-WebSocket-Origin: null
Sec-WebSocket-Location: ws://example.com/

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30373.html

相关文章

  • WebSocket 原理

    摘要:原理转载自个人博客,转载请声明,走啊走的记录原理背景以前的网站为了实现推送功能,使用的方法都是轮询。注意实际上指的是一种协议,与我们熟知的协议是同等的一个网络协议。协议与的联系是指的一系列新的,或者说新规范,新技术。 WebSocket 原理 转载自个人博客,转载请声明,走啊走的记录:WebSocket 原理 背景 以前的网站为了实现推送功能,使用的方法都是轮询。所谓的轮询就是在特定的...

    jerry 评论0 收藏0
  • 八问WebSocket协议:为你快速解答WebSocket热门疑问

    一、引言 WebSocket是一种比较新的协议,它是伴随着html5规范而生的,虽然还比较年轻,但大多主流浏览器都已经支持。它使用方面、应用广泛,已经渗透到前后端开发的各种场景中。 对http一问一答中二式流程(就是从所周之的长轮询技要啦)的不满,催生了支持双向通信的WebSocket诞生。WebSocket是个不太干净协议。 本文将从8个常见的疑问入手,为还不了解WebSocket协议的开发者快...

    Zoom 评论0 收藏0
  • 【HTTP基础】HTTPS原理WebSocket原理

    摘要:使用约定好的计算握手消息,并使用生产的随机数对消息进行加密,最后将之前生成的所有消息发送给网站。之后所有的通信数据将由之前浏览器生成的随机密码并利用对称加密算法进行加密。支持四个异步事件。 由于HTTP没有加密机制,其传输的内容很容易泄漏,并且HTTP协议没法确认通信方,也无法保证接收到的报文在传输过程中是否被篡改,因此HTTPS是在HTTP协议的基础上提供了加密、认证和完整性保护的功...

    fyber 评论0 收藏0
  • webSocket原理探索

    摘要:帧是发送数据的基本单位,下边是它的报文格式报文内容中规定了数据标示操作代码掩码数据数据长度等格式。首先我们明白了客户端和服务端进行消息传递是这样的客户端将消息切割成多个帧,并发送给服务端。服务端接收消息帧,并将关联的帧重新组装成完整的消息。 本文概述 Web Sockets的目标是在一个单独的持久连接上提供全双工、双向通信。在Javascript创建了Web Socket之后,会有一个...

    baukh789 评论0 收藏0
  • webSocket原理探索

    摘要:帧是发送数据的基本单位,下边是它的报文格式报文内容中规定了数据标示操作代码掩码数据数据长度等格式。首先我们明白了客户端和服务端进行消息传递是这样的客户端将消息切割成多个帧,并发送给服务端。服务端接收消息帧,并将关联的帧重新组装成完整的消息。 本文概述 Web Sockets的目标是在一个单独的持久连接上提供全双工、双向通信。在Javascript创建了Web Socket之后,会有一个...

    WelliJhon 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<