欢迎光临散文网 会员登陆 & 注册

使用SpringBoot搭建实时通信服务

2021-10-20 09:20 作者:向上生长之路  | 我要投稿

在软件开发过程中,经常需要获取服务器端数据来展示给用户,对于数据的及时性有要求的场景,我们可能会采用长轮询等方式,来以一定的频率向服务器发起请求拉取数据,轮询方式会持续占用系统资源,效率较低,那么有没有一种解决方案,能做到服务器端有数据更新,及时通知客户端呢?通过使用websocket技术,我们可以做到客户端与服务器端的全双工通信,两端都可以实时的发送数据给对方~,下面就给大家介绍下SpringBoot中怎么整合websocket技术

  • SpringBoot版本 2.4.5

使用方式

1.修改SpringBoot工程中的pom.xml配置,增加websocket的依赖


2.修改SpringBoot工程启动类,添加@EnableWebSocket注解来启用websocket能力支持


3.添加websocket配置
完整代码参考:https://github.com/netbuffer/spring-boot-websocket-demo/blob/master/src/main/java/cn/netbuffer/springboot/websocket/demo/config/SpringWebSocketConfig.java


4.实现自己的消息处理器
完整代码参考:https://github.com/netbuffer/spring-boot-websocket-demo/blob/master/src/main/java/cn/netbuffer/springboot/websocket/demo/websocket/handler/TextHandler.java


5.建立Controller控制器层映射方法,来测试主动推送消息到客户端
完整代码参考:https://github.com/netbuffer/spring-boot-websocket-demo/blob/master/src/main/java/cn/netbuffer/springboot/websocket/demo/controller/WebsocketController.java


6.编写客户端html代码验证websocket能力
完整代码参考:https://github.com/netbuffer/UItest/blob/master/websocket/index.html


运行效果

启动SpringBoot工程,再使用chrome浏览器访问客户端页面,打开开发者工具



观察开发者工具控制台已经打印出连接的日志,服务器端控制台也已经打印出连接日志
现在通过客户端页面发送一些消息,来查看服务器端日志是否有输出~



观察结果可以看到服务器端已经收到对应内容,并写回响应消息给客户端了

再测试下服务器主动推送消息给客户端的效果,使用Postman工具访问我们编写的接口来发送一些消息给客户端,注意session字符串可以从服务器日志打印中找到



观察结果可以看到服务器已经能实时推送相应的内容给客户端了~

完整测试工程参考:https://github.com/netbuffer/spring-boot-websocket-demo

使用SpringBoot搭建实时通信服务的评论 (共 条)

分享到微博请遵守国家法律