Spring Boot 整合webSock实现网页聊天,即时通讯

本文源于转载:摘其精华。原文:https://blog.csdn.net/qq_25843323/article/details/81585648

测试demo是自己照着写的,上传的资源

****测试demo: git仓库地址: 

 

导入为maven项目:

测试

在浏览器上输入:localhost:8081/websocket/Rose

再添加一个用户:localhost:8081/websocket/Jack

1、Spring Boot 整合webSock实现网页聊天,即时通讯_第1张图片

 

2、

Spring Boot 整合webSock实现网页聊天,即时通讯_第2张图片

3、

Spring Boot 整合webSock实现网页聊天,即时通讯_第3张图片

4、

Spring Boot 整合webSock实现网页聊天,即时通讯_第4张图片

 

WebSockl说明

       WebSocket用于在Web浏览器和服务器之间进行任意的双向数据传输的一种技术。WebSocket协议基于TCP协议实现,包含初始的握手过程,以及后续的多次数据帧双向传输过程。其目的是在WebSocket应用和WebSocket服务器进行频繁双向通信时,可以使服务器避免打开多个HTTP连接进行工作来节约资源,提高了工作效率和资源利用率。

1. 什么是keep-alive

   keep-alive只是客户端的一种建议

   1.keep-alive是通知服务器,在这个HTTP Request/Responset结束后,不要立即断开TCP连接(注意是TCP连接,和HTTP没有关系),后面的HTTP Request仍然可以通过这个TCP连接继续传送。

但是!这只是个建议,服务器可能不支持,也可能忽略掉这个建议。也可能因为时间太久而直接断开TCP连接

通俗点解释就是:keep-alive只是通知服务器,您先别挂,一会儿可能还有活儿,至于它挂不挂还是看它心情。 
所以,keep-alive只是客户端建议的一种复用TCP连接的方式,至于服务器支持不支持,就由不得客户端了。

keep-alive只是http协议中的一部分 
keep-alive是http协议中的一部分,也即客户端可以主动的发起request到服务器,服务器只能被动的response给客户端。 
我要想实现服务器主动的push消息给客户端,keep-alive是无能无力的。
 

2. Websocket协议解决了服务器与客户端全双工通信的问题。

   注:什么是单工、半双工、全工通信? 信息只能单向传送为单工; 信息能双向传送但不能同时双向传送称为半双工; 
信息能够同时双向传送则称为全双工。

websocket协议解析 
wensocket协议包含两部分:一部分是“握手”,一部分是“数据传输”。 
 

 

 

 

 

 

 

 

你可能感兴趣的:(java开发技术)