SpringBoot整合WebSocket实现前后端通讯(页面实时刷新列表页/权限变更时服务器通讯)

本文介绍了如何使用SpringBoot集成WebSocket,实现前后端通信,包括添加依赖、配置类的设置、服务发现过程以及通过Nginx服务器进行消息转发,以达到页面实时刷新和权限变更时的即时通讯。

SpringBoot整合WebSocket实现前后端通讯

第一步:引入依赖

<!--    WebSocket服务的搭建    -->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

第二步:加入配置类

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;

/**
 * @ClassName WebSocketConfig
 * @Description WebSocket相关配置 这个类里监听连接的建立关闭、消息的接收等
 * @Author WTT
 * @Date 2023/5/4 9:40
 * @Version 1.0
 **/
@Configuration
@EnableWebSocket
public class WebSocketConfig {
   
   

    @Bean
//    @Conditional(WarAndJarWebscoketAutoWired.class)
    public ServerEndpointExporter serverEndpointExporter() {
   
   
        return new ServerEndpointExporter();
    }
}

第三步:服务发现

import com.alibaba.fastjson.JSONObject;
import com.hx.common.Result;
import com.hx.service.IFileStuDataService;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils
我通过修改苍穹外卖的部分源码,实现了一个“味来点餐系统“,这是我的主要流程:一、客户端核心流程 1用户登录与认证 o 流程:用户通过客户端输入账号密码 → 后端校验用户信息 → 生成 JWT 令牌并返回给客户端 → 客户端后续请求携带 JWT,通过自定义拦截器进行认证。 o 技术实现:使用 JWT 实现无状态认证,ThreadLocal 存储用户信息,拦截器统一校验 Token 有效性。 5. 菜品浏览与购物车管理 o 流程:用户浏览菜品分类和详情 → 选择菜品规格并加入购物车 → 购物车数据通过 Redis 缓存,支持实时增删改查。 o 技术实现:Redis 缓存菜品和套餐数据,结合布隆过滤器解决缓存穿透问题。 6. 下单与支付 o 流程:用户提交订单 → 后端校验库存并生成订单 → 调用支付接口完成支付 → 支付成功后通过 WebSocket 实时通知商家端。 o 技术实现:使用 Redis + Lua 脚本实现分布式锁,防止高并发下菜品超卖。 7. 催单与订单状态查询 o 流程:用户发起催单 → 后端通过 WebSocket 推送消息至商家端。 o 技术实现WebSocket 实现客户端与商家端的实时通信,结合 Spring Boot 的 @ServerEndpoint 注解管理会话。 ________________________________________ 二、商家端核心流程 5. 员工登录与权限管理 o 流程:商家员工输入账号密码 → 后端校验后生成 JWT 令牌 → 拦截器验证权限(如管理员可操作员工管理模块)。 o 技术实现:JWT 认证,AOP 实现公共字段自动填充(如创建间、修改人)。 6. 菜品与套餐管理 o 流程:商家新增/编辑菜品或套餐 → 上传图片至服务器或云存储。 o 技术实现:MyBatis 实现多表关联查询,Redis 缓存菜品和套餐数据。 7. 订单处理与数据统计 o 流程:商家处理订单(接单、派送、完成) 8. 来单提醒与催单处理 o 流程:新订单触发 WebSocket 推送 → 商家端实时接收提醒;用户催单,商家端实时接收催单消息。 o 技术实现WebSocket 实现实时通信。 ________________________________________ 三、系统架构与关键技术 3. 分层架构 o 网关层:Nginx 实现反向代理与负载均衡,提升并发处理能力。 o 应用层:Spring Boot 整合 SpringMVC、MyBatis,支持模块化开发;Swagger 自动生成接口文档。 o 数据层:MySQL 存储核心业务数据,Redis 缓存高频访问数据(如购物车、菜品分类)。 4. 第三方服务集成 o 图片存储:使用云存储或本地存储菜品图片,降低服务器压力。 ________________________________________ 四、项目难点与解决方案 4. 高并发场景下的性能优化 o 使用 Redis 缓存菜品和套餐数据,结合布隆过滤器解决缓存穿透问题。 o 通过 Redis + Lua 脚本实现分布式锁,防止高并发下菜品超卖。 5. 实时通信需求 o WebSocket 实现订单状态实时推送,避免轮询带来的性能损耗。 6. 公共字段自动填充 o 基于 AOP 实现公共字段(如创建间、修改人)的自动填充,降低代码耦合。 如果你记住了上述流程,只用回复OK就可以了。
03-10
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值