基于WebSocket + STOMP + SockJS + RabbitMq的聊天室Demo

目录

一、简介

老早之前写的一个基于WebSocket + STOMP + SockJS + RabbitMq的聊天室Demo,感兴趣的小伙伴可以鼓捣一下。

  • 相关技术:WebSocket + STOMP + SockJS + RabbitMq
  • 核心功能:支持广播消息、给指定用户发消息
  • 后端支持集群部署,且客户端到后端需支持会话保持

聊天室页面展示

Cluster Support

具体代码参见:
https://gitee.com/luoex/spring-boot-websocket-chat-demo

二、RabbitMq启用STOMP

bash 复制代码
# linux 
rabbitmq-plugins enable  rabbitmq_stomp

# windows(执行完如下命令后需重启RabbitMQ服务)
rabbitmq-plugins.bat enable rabbitmq_stomp

windows安装结果

bash 复制代码
D:\programs\RabbitMq3.9.11\rabbitmq_server-3.9.11\sbin>rabbitmq-plugins.bat enable rabbitmq_stomp
Enabling plugins on node rabbit@TSD-LUOHQ:
rabbitmq_stomp
The following plugins have been configured:
  rabbitmq_management
  rabbitmq_management_agent
  rabbitmq_stomp
  rabbitmq_web_dispatch
Applying plugin configuration to rabbit@TSD-LUOHQ...
The following plugins have been enabled:
  rabbitmq_stomp

set 4 plugins.
Offline change; changes will take effect at broker restart.

三、相关Destination说明

destionation分为3种类型:

  • 广播 - /topic前缀,向所有订阅此类destination的客户端发布消息
  • 单播 - /user前缀,仅向所有订阅此类destination的指定用户的客户端发送消息(仅客户端使用/user前缀,后端无需使用/user前缀)
  • 应用处理 - /app前缀,可有客户端向此类destination发布消息,然后由后端@Controller类中的@MessageMapping方法接收消息并处理(仅客户端使用/app前缀,后端无需使用/app前缀)
类型 前缀 类型说明 前缀使用说明
广播 /topic 向所有订阅此类destination的客户端发布消息, 例如:/topic/public 前后端均需使用/topic前缀
单播 /user 仅向所有订阅此类destination的指定用户的客户端发送消息, 例如:/user/msg 仅客户端使用/user前缀,后端无需使用/user前缀
应用处理 /app 可有客户端向此类destination发布消息,然后由后端@Controller类中的@MessageMapping方法接收消息并处理, 例如:/app/chat.sendMessage 仅客户端使用/app前缀,后端无需使用/app前缀

客户端相关destination:

destination 关联方式 说明
/topic/public 订阅 接收广播消息
/user/topic/msg 订阅 接收个人专属消息
/app/chat.addUser 发布 发布当前用户上线消息
/app/chat.sendMessage 发布 发布聊天消息

服务端相关destination:

destination 关联方式 说明
/topic/public 发布 发布广播消息
/topic/msg 发布 发布个人专属消息
/chat.addUser 订阅 @MessageMapping("/chat.addUser") 接收当前用户上线消息
/chat.sendMessage 订阅 @MessageMapping("/chat.sendMessage") 接收聊天消息
相关推荐
zxanz113 小时前
免费 SSL 证书的隐性成本:续期压力、稳定性与商业风险评估
网络·网络协议·ssl
zzu123zsw13 小时前
面对多 RPC 扇入超时崩溃:深入 asyncTool 核心 DAG 编排与线程池隔离防护
java·网络·spring boot·网络协议·rpc·并发编程
福娃筱欢13 小时前
金仓数据库配置SSL双向认证
数据库·网络协议·ssl
K成长日志13 小时前
BLE Host层L2CAP -- 状态机
物联网·网络协议·无线通信·蓝牙·iot·ble
honsor14 小时前
ModbusTCP、SNMP、HTTP 怎么选?以太网温湿度变送器协议选型实战
网络·物联网·网络协议·tcp/ip·http
启博网络14 小时前
智慧档案库房工业组网:MR-1280 边缘大脑,实现温湿度、漏水、防火防盗设备智能联动教程
运维·网络·物联网·网络协议·网络安全·信息与通信·sdwan
wdfk_prog14 小时前
lwip教程 31:SLIP vs PPPoS——串口 IP Framing、错误检测、协商与工程边界
网络协议·tcp/ip·php
ITxiaobing202315 小时前
AppsFlyer Protect360 判假之后:如何系统排查 IP 维度
网络·网络协议·tcp/ip
byte轻骑兵15 小时前
【HIDS】规范精讲[2]:一枚 Report 的诞生——HID 服务端特征全解剖
网络协议·人机交互·低功耗蓝牙·蓝牙协议·hogp
syagain_zsx16 小时前
BRpc 搭建简单 rpc 服务器
服务器·c++·网络协议·rpc·protobuf·库