http的请求过程:
客户端主动发起请求到服务端,服务端根据请求发起相应的处理后给客户端一个响应。
前提: 客户端必须先发起请求,服务端才能发起响应。非常依赖客户端的主动性。
客户端不主动的发起请求的话,服务端是不能主动推送响应的。
Socket:
Socket通常意义上是指的TCP的socket。也是客户端和服务端,只不过客户端和服务端上来2方就建立一个长连接通道,在这个长连接通道上客户端可以主动向服务端发送消息。服务端也可以向客户端发起响应,也可以不响应。之间比较随意。
好处:服务端可以主动推送消息,客户端也能主动发送消息。
Websocket:
有些情况下需要使用socket方式,所以html5之后websocket出现了。
这样发送一条消息并原路返回。左边的是客户端的websocket,右边的是服务端的websocket
然后查看Network,发现状态码是101:
这是websocket连接成功的状态码.
websocket发送一条消息:
上图所示是因为客户端发送了一条yinlei的消息,然后服务端给我们返回回来了。
客户端如何监听服务端返回回来的消息呢?
通过如下事件监听:
这样就监听了消息事件。
现在发送一条消息做测试:
以上示例
可以看到也是通过一个上传下载,好像也是通过一个请求,似乎和http的方式无区别。
那么服务端主动推送的形式怎么来?
先修改服务端:
现在服务端触发按钮发送(右边的是服务端)
可以看到返回了一条当前时间戳,因为触发的按钮是timestamp。
多点击几次,再看看客户端:
这就是服务端主动推送给客户端的方式。
拓展:Go实现消息推送
下篇文章将继续介绍SpringBoot整合Websocket.