WebSocket是一种在单个TCP链接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更简单,允许服务端主动向客户端推送数据。
在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接, 并进行双向数据传输。
WebSocket本质上一种计算机网络应用层的协议
,用来弥补http协议在持久通信能力上的不足。
WebSocket 协议在2008年诞生,2011年成为国际标准。现在最新版本浏览器都已经支持了。
我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处?
因为 HTTP 协议有一个缺陷:通信只能由客户端发起,不具备服务器推送能力。
举例来说,我们想了解查询今天的实时数据,只能是客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息。
服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。
(1)建立在 TCP 协议之上,服务器端的实现比较容易。
(2)与 HTTP 协议有着良好的兼容性。默认端口也是80和443,并且握手阶段采用 HTTP 协议,因此握手时不容易屏蔽,能通过各种 HTTP 代理服务器。
(3)数据格式比较轻量,性能开销小,通信高效。
(4)可以发送文本,也可以发送二进制数据。
(5)没有同源限制,客户端可以与任意服务器通信。
(6)协议标识符是ws
(如果加密,则为wss
),服务器网址就是 URL。
ws://example.com:80/some/path
优点:
缺点:
与http协议一样,WebSocket协议也需要通过已建立的TCP链接来传输数据。具体实现上是通过http协议建立通道,然后在此基础上用真正的WebSocket协议进行通信,所以WebSocket协议和http协议是有一定的交叉关系的。
首先,WebSocket是一个持久化的协议,相对于HTTP这种非持久化的协议来说。
今天暂时写这些,以下内容会持续输出(望见谅)
相同点:都是一样基于TCP的,都是可靠性传输协议。都是应用层协议。
联系:WebSocket在建立握手时,数据是通过HTTP传输的。但是建立之后,在真正传输时候是不需要HTTP协议的。
1、WebSocket是双向通信协议,模拟Socket协议,可以双向发送或接受信息,而HTTP是单向的;
2、WebSocket是需要浏览器和服务器握手进行建立连接的,而http是浏览器发起向服务器的链接。
注意:虽然HTTP/2也具备服务器推送功能,但HTTP/2只能推送静态资源,无法推送指定的信息。
1、即使聊天通信
2、多玩家游戏
3、在线协同编辑
4、实时数据流的拉取与推送
5、体育/游戏实况
6、实时地图位置
7、即时Web
应用程序:即时Web
应用程序使用一个Web
套接字在客户端显示数据,这些数据由后端服务器连续发送。在WebSocke
t中,数据被连续推送/传输到已经打开的同一连接中,这就是为什么WebSocket
更快并提高了应用程序性能的原因。 例如在交易网站或比特币交易中,这是最不稳定的事情,它用于显示价格波动,数据被后端服务器使用Web套接字通道连续推送到客户端。
8、游戏应用程序:在游戏应用程序中,你可能会注意到,服务器会持续接收数据,而不会刷新用户界面。屏幕上的用户界面会自动刷新,而且不需要建立新的连接,因此在WebSocket
游戏应用程序中非常有帮助。
9、聊天应用程序:聊天应用程序仅使用WebSocket
建立一次连接,便能在订阅户之间交换,发布和广播消息。它重复使用相同的WebSocket
连接,用于发送和接收消息以及一对一的消息传输。
如果我们需要通过网络传输的任何实时更新或连续数据流,则可以使用WebSocket
。如果我们要获取旧数据,或者只想获取一次数据供应用程序使用,则应该使用HTTP
协议,不需要很频繁或仅获取一次的数据可以通过简单的HTTP
请求查询,因此在这种情况下最好不要使用WebSocket
。
注意:如果仅加载一次数据,则RESTful
Web
服务足以从服务器获取数据。