基于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") 接收聊天消息
相关推荐
2301_810746312 小时前
CKA冲刺40天笔记 - day20-day21 SSL/TLS详解
运维·笔记·网络协议·kubernetes·ssl
汤愈韬3 小时前
知识点3:动态目的NAT的配置总结
网络·网络协议·网络安全·security·huawei
00后程序员张4 小时前
HTTPS Everywhere 时代的抓包挑战,从加密流量解析到底层数据流捕获的全流程方案
网络协议·http·ios·小程序·https·uni-app·iphone
发光小北5 小时前
SG-PNh750-TCP-210(Profinet 从站转 Modbus TCP 网关)
网络·网络协议·tcp/ip
轻颂呀6 小时前
TCP协议
linux·网络·网络协议·tcp/ip
Tao____7 小时前
支持mqtt、tcp、udp、websocket、http协议的物联网平台
java·物联网·mqtt·websocket·tcp/ip·udp
雪影风痕7 小时前
华为安全防火墙部署
服务器·网络协议·tcp/ip·网络安全
156082072199 小时前
FPGA(采用RGMII接口)逻辑实现千兆网TCP/IP协议栈调试记录
网络协议·tcp/ip·fpga开发
curd_boy9 小时前
IM 顶层设计
websocket·架构·信息与通信
CesareCheung10 小时前
用python写一个websocket接口,并用jmeter压测websocket接口
python·websocket·jmeter