Spring WebSocket
文章目录
1.WebScoket协议
(1)概念
初次接触 WebSocket 的人,都会问同样的问题:我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处?
答案很简单,因为 HTTP 协议有一个缺陷:通信只能由客户端发起
。
举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息。
而WebScoket协议基于Http协议,它的最大特点就是服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。
ws://echo.websocket.org/?encoding=text HTTP/1.1
(2)特点
- 服务器能够主动向客户端发送消息,客户端也能向服务器发送消息
- 基于http协议,默认端口也是80和443,并且握手阶段采用的是Http协议,能通过各种http的代理服务器(如Nginx)
- 可以发送文本json,也可以发送二进制数据
- 协议标识符有ws和wss(对标http和https)
(3)通信原理
既然是基于浏览器端的web技术,那么它的通信肯定少不了http,websocket本身虽然也是一种新的应用层协议,但是它也不能够脱离http而单独存在。具体来讲,我们在客户端构建一个websocket实例,并且为它绑定一个需要连接到的服务器地址,当客户端连接服务端的时候,会向服务端发送一个类似下面的http报文
GET /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol