mirror of
https://github.com/nagisa77/OpenIsle.git
synced 2026-02-22 06:50:53 +08:00
1.8 KiB
1.8 KiB
WebSocket Service 协作指引
1) 适用范围
- 作用于
websocket_service/目录及其子目录。 - 本服务是实时通知链路关键节点,改动需谨慎。
2) 服务职责
- 通过 STOMP 维护客户端实时连接(
/api/ws、/api/sockjs)。 - 从 RabbitMQ 队列消费通知并转发至用户/会话目的地。
- 在连接阶段执行 JWT 鉴权。
3) 关键一致性规则
- JWT 密钥与后端保持一致(同一
JWT_SECRET语义)。 - 队列配置与后端分片策略同步:
- 后端声明:
backend/.../RabbitMQConfig.java - 后端分片:
backend/.../ShardingStrategy.java - 本服务监听:
src/main/java/com/openisle/websocket/listener/NotificationListener.java
- 后端声明:
- 监听队列当前约定:16 个十六进制分片队列 + 遗留
notifications-queue。
4) 修改规则
- 不随意变更 STOMP 目的地命名(
/topic/...、/user/...)。 - 若必须调整目的地,需同步前端
frontend_nuxt/composables/useWebSocket.js与相关消费代码。 WebSocketAuthInterceptor中 CONNECT 鉴权失败策略(拒绝连接)应保持清晰一致。- Allowed origins 改动需考虑本地、预发、正式环境域名。
5) 配置与可观测性
- 配置入口:
src/main/resources/application.properties - 健康检查:
/actuator/health(部署与 compose 依赖该路径) - 日志级别改动需避免在生产产生高噪声。
6) 验证建议
- 首选:
mvn test - 若暂无测试覆盖:
mvn -DskipTests compile - 变更消息推送逻辑时,至少完成一次端到端验证:
- 生产者发送消息
- RabbitMQ 消费成功
- 客户端收到对应目的地消息
7) 输出要求
- 说明是否影响队列名、路由键、目的地或鉴权逻辑。
- 说明是否需要前端/后端同步改动。