spring boot websocket stomp 实现广播通信和一对一通信聊天

一、前言

玩.net的时候,在asp.net下有一个叫 SignalR 的框架,可以在ASP .NET的Web项目中实现实时通信。刚接触java寻找相关替代品,发现 java 体系中有一套基于stomp协议的websocket通信的框架,websocket是什么可以参考阮老大的《WebSocket 教程》,这篇文章不讨论理论知识,这里只讲应用,把websocket的广播模式与一对一模式一起整理一个demo给大家分享一下。

二、项目结构

因为一对一私聊模式 使用principal的name作为目的地标识。发给消息来源的那个用户,该操作是认为用户登录并且授权认证,所以这里使用Spring Security来控制身份认证,项目结构如下:

1.WebSecurityConfig: Spring Security安全控制类

2.WebSocketConfig: web socket 控制类

3. DefaultController:mvc控制器

4.ChatMessage: 消息实体对象

5.chat.html : 聊天消息发送接收html客户端页面

6.login.html:登录页

pom.xml依赖如下:

三、代码实现

1.web服务器安全配置

2.WebSocket 配置类

3.控制器

4.消息载体:pojo对象

5.客户端聊天html页面

三、测试:

1,分别在两个浏览器中打开,登录user1与user2

2,发消息测试

3.断开测试:断开后无论公共消息私有消息都无法再接收

六、参考文档

1.WebSocket 教程:http://www.ruanyifeng.com/blog/2017/05/websocket.html

2.玩转spring boot——websocket:https://www.cnblogs.com/GoodHelper/p/7078381.html

3.Spring Boot 开发私有即时通信系统(WebSocket):https://www.jianshu.com/p/0f498adb3820