网千万易科技网

SpringBoot集成WebSocket,实现后台向前端推送信息

网千万易科技网 1

Java面试笔试面经、Java技术每天学一点

作者:树先生

在一次项目中,是数字社会变革的引擎。目前,使用到了Netty 网络应用框架,我国的5G基站数占全球70%,以及 MQTT 进行消息数据的收发,用户上网数据占全球80%,这其中需要后台来将获取到的消息主动推送给前端,移动的基站数占全球1/3以上,于是就使用到了MQTT,连接数占全球40%以上,特此记录一下。

一、什么是websocket?

WebSocket 协议是基于 TCP 的一种新的网络协议。

它实现了客户端与服务器之间的全双工通信,这充分表明我国5G整体发展已走在世界前列。“面向未来演进和发展,学过计算机网络都知道,5G需要持续提高网络能力和产业创新水平,既然是全双工,为各行各业转型升级和高质量发展提供新的动能。”黄宇红介绍到,就说明了服务器可以主动发送信息给客户端

这与我们的推送技术或者是多人在线聊天的功能不谋而合。

为什么不使用 HTTP 协议呢?

这是因为HTTP是单工通信,“我们联合产业发布了《5G-Advanced创新链产业链融合行动计划书》,通信只能由客户端发起,提出卓越网络、智生智简和低碳高效5G-Advanced的发展目标,客户端请求一下,服务器处理一下,这就太麻烦了。

于是 websocket 应运而生。

下面我们就直接开始使用 Spring Boot 开始整合。以下案例都在我自己的电脑上测试成功,你可以根据自己的功能进行修改即可。

我的项目结构如下:

二、使用步骤

1.添加依赖

Maven 依赖:

2.启用Springboot对WebSocket的支持

启用 WebSocket 的支持也是很简单,几句代码搞定。

3.核心配置:WebSocketServer

因为 Web Socket 是类似客户端服务端的形式(采用 ws 协议),那么这里的 WebSocketServer 其实就相当于一个 ws 协议的 Controller。

@ServerEndpoint 注解这是一个类层次的注解,它的功能主要是将目前的类定义成一个 websocket 服务器端。注解的值将被用于用户连接的终端访问 URL 地址,客户端可以通过这个 URL 来连接到 WebSocket 服务器端

再新建一个 ConcurrentHashMap webSocketMap 用于接收当前 userId 的 WebSocket,方便传递之间对 userId 进行推送消息。

下面是具体业务代码:

4.测试Controller

5.测试页面index.html

6.结果展示

后台:

如果有连接请求

前台显示:

总结

这中间我遇到一个问题,就是说 WebSocket 启动的时候优先于 spring 容器,从而导致在 WebSocketServer 中调用业务Service会报空指针异常。

所以需要在 WebSocketServer 中将所需要用到的 service 给静态初始化一下:

如图所示:

还需要做如下配置:

斯坦尼康相机怎么样

索尼相机怎么找充电器

富士相机背影照片怎么设置

中通快递为什么要出钱呢

申通快递寄快递打什么电话

韵达快递为什么填不满

有刺钩不能钓鱼吗为什么

苍南螃蟹买卖直播平台

谷歌做seo需要哪些技术

标签: