WebSocket是一个计算机通讯协议,在单个TCP连接上提供全双工的通讯模式。WebSocket设计用于Web浏览器和Web服务器之间的通讯,但也可以用于其他的客户端和应用服务器。WebSocket是独立的基于TCP的协议。WebSocket和HTTP的关系是,WebSocket的握手被翻译成HTTP的升级请求。WebSocket协议可以降低Web服务器和浏览器之间的开销,这个特性适合实时数据的传输。WebSocket的协议特性,让客服端与服务器之间没有客户端请求的请求的情况进行标准通讯成为可能,另外也可以在连接打开的情况进行数据的收发。服务器与浏览器之间的双向通讯就按这种方式进行。协议的通讯端口为TCP端口80或者443,这样就不会进行非Web通讯时被防火墙拦截。
不同于HTTP,WebSocket提供全双工的通讯。另外WebSocket提供基于TCP的消息流,TCP处理字节流。
为了建立WebSocket连接,客户端发送WebSocket握手请求,服务端返回WebSocket握手回应,下为示例。
客户端请求(和HTTP一样,每行以\r\n结尾,并且在最后必须有一空行):
GET
/chat HTTP
/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Origin: http://example.com
Server response:
HTTP
/1.1 101
Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: HSmrc0sMlYUkAGmm5OPpG2HaGWk=
Sec-WebSocket-Protocol: chat
握手模拟HTTP,主要是为了服务端在同一端口即能处理HTTP连接也处理WebSocket连接。一旦连接建立,通讯就转向了双向二进制协议,这个协议并不遵守HTTP协议。
具体关系可以参考下图:
WebSocket
是HTML5下一种新的协议(
websocket
协议本质上是一个基于
tcp
的协议)
它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的
Websocket
是一个
这张图你能看明白吗?不能没事还有一张更简单的
搞懂这个图很关键,我们与人聊天不是在面对面聊天,其实在于服务器聊天,传统的
http
是客户端发起请求服务器响应请求,重点是服务器无法给客户端发起请求
websocket
说白了就是解决这个问题,第一张图轮询是每隔一段时间客户端就向服务器发起请求有没有小明发过来的问话,没有就再隔一段事件再问,这会造成服务器压力很大!!!
手把手撸websock
l
HTTP
协议
HTTP
协议有一个缺陷:通信只能由客户端发起。
HTTP
协议做不到服务器主动向客户端推送信息。²
HTTP
的缺陷在
WebSocket
规范提出之前,开发人员若要实现这些实时性较强的功能,经常会使用折衷的解决方法:轮询(polling)和Comet技术。其实后者本质上也是一种轮询,只不过有所改进。轮询是最原始的实现实时Web应用的解决方案。轮询技术要求客户端以设定的时间间隔周期性...
websocket
是什么
答: 它是一种网络通信协议,是 HTML5 开始提供的一种在单个
TCP
连接上进行全双工通讯的协议。
为什么需要
websocket
? 疑问? 我们已经有了
HTTP
协议,为什么还需要另一个协议?它能带来什么好处?
因为
HTTP
协议有一个缺陷:通信只能由客户端发起
我们都知道轮询的效率低,非常浪费资源(因为必须不停连接,或者
HTTP
...
最近工作需要测试
websocket
接口,之前一直用 Postman 做
http
请求 这种短连接的发包工具,最近发现除了 Postman,有国产开源的软件也能进行
Websocket
测试。关键是无论是下载、安装、使用都很便捷,而且还免费。
目录简介一、
WebSocket
是什么?二、使用
WebSocket
1.
WebSocket
工作原理 1.1 握手(建立连接) 1.2 数据传输2.
WebSocket
2.1 事件 2.2 方法 2.3 属性 3.
WebSocket
优点总结
websocket
是html5提供的一种浏览器与服务器进行全面双工通讯的网络技术,是基于
TCP
传输的应用层协议
WebSocket
WebSocket
W
利用
websocket
连接服务器的最大特点就是:持久链接的特点。共同点是:都是基于
TCP
协议进行client-server的链接,
websocket
是HTML5提出的一套补缺
HTTP
链接中不能持久链接的特点(除长连接,长轮询)轮询(AJAX):指的是浏览器端定时发送请求到服务器端,服务器接收到请求后作出响应并关闭连接该次链接。 (缺点是:在时间定时上需要考虑更多,多久进行一次轮询等)
长轮...