概念

WebSocket 是基于TCP/IP协议,独立于HTTP协议的通信协议。WebSocket 是双向通讯,有状态,客户端一(多)个与服务端一(多)双向实时响应(客户端 ⇄ 服务端)。WebSocket 是应用在浏览器的 Socket (是 Socket 模型接口的实现),Socket 是一个网络通信接口 (通信规范)。WebSocket协议端口是80。WebSocket SSL协议端口是443。Socket是TCP/IP协议的网络数据通讯接口(一种底层的通讯的方式)。Socket是IP地址和端口号的组合。例如:192.168.1.100:8080。

什么是WebSocket

WebSocket 是一种在单个TCP连接上进行全双工通信的协议。WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接, 并进行双向数据传输。(维基百科)WebSocket本质上一种计算机网络应用层的协议,用来弥补http协议在持久通信能力上的不足。WebSocket 协议在2008年诞生,2011年成为国际标准。现在最新版本浏览器都已经支持了。它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。WebSocket 的其他特点包括:(1)建立在 TCP 协议之上,服务器端的实现比较容易。(2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。(3)数据格式比较轻量,性能开销小,通信高效。(4)可以发送文本,也可以发送二进制数据。(5)没有同源限制,客户端可以与任意服务器通信。(6)协议标识符是ws(如果加密,则为wss),服务器网址就是 URL。对大部分web开发者来说,上面这段描述有点枯燥,其实只要记住几点:

WebSocket可以在浏览器里使用;支持双向通信;使用很简单。

为什么需要 WebSocket?

我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处?因为 HTTP 协议有一个缺陷:通信只能由客户端发起,不具备服务器推送能力。举例来说,我们想了解查询今天的实时数据,只能是客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息。

WebSocket 与 HTTP 的区别

WebSocket 与 HTTP的关系图:相同点: 都是一样基于TCP的,都是可靠性传输协议。都是应用层协议。联系: WebSocket在建立握手时,数据是通过HTTP传输的。但是建立之后,在真正传输时候是不需要HTTP协议的。下面一张图说明了 HTTP 与 WebSocket 的主要区别:

WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息,而HTTP是单向的。WebSocket是需要浏览器和服务器握手进行建立连接的,而http是浏览器发起向服务器的连接。

注意:虽然HTTP/2也具备服务器推送功能,但HTTP/2 只能推送静态资源,无法推送指定的信息。

Websocket的优缺点

优点:

WebSocket协议一旦建议后,互相沟通所消耗的请求头是很小的服务器可以向客户端推送消息了

缺点:

少部分浏览器不支持,浏览器支持的程度与方式有区别(IE10)

参考链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: