Files
OpenIsle/websocket_service/AGENTS.md

1.8 KiB
Raw Blame History

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) 输出要求

  • 说明是否影响队列名、路由键、目的地或鉴权逻辑。
  • 说明是否需要前端/后端同步改动。