Class HandleProtocolMessage

java.lang.Object
io.github.theword.queqiao.core.handle.HandleProtocolMessage

public class HandleProtocolMessage extends Object
处理协议消息

这是传输无关的协议分发入口:WebSocket(以及未来的 HTTP)都复用同一套解析与路由。

生命周期与线程安全:本类由 QueQiaoRuntime 创建唯一实例并注入给各传输层 (WebsocketManager → 各 WsClient / WsServer), 因此会被多个连接、多个线程并发调用。

本类构造后即不可变:字段全部 final, ProtocolRouter 的处理器表也只在构造阶段写入、之后只读; 各处理器实现必须无状态(见 AbstractProtocolHandler)。 因此并发调用是安全的,且不存在锁——不同连接之间不会相互串行化。

顺序说明:单个连接内的请求处理顺序由该连接的读线程串行保证, 与本类实例数量无关。

状态码语义:请求体不是合法 JSON 或为 null 时返回 400(调用方错误), 而不是把调用方错误伪装成服务端内部错误。

日志安全:debug 日志会先对 token / password 等敏感字段脱敏、再按长度截断; warn / error 日志不输出请求体内容,只输出长度。

Since:
0.6.11
  • Constructor Details

    • HandleProtocolMessage

      public HandleProtocolMessage(org.slf4j.Logger logger, com.google.gson.Gson gson, HandleApiService handleApiService, RconCommandExecutor rconCommandExecutor)
  • Method Details

    • handleWebsocketJson

      public String handleWebsocketJson(org.java_websocket.WebSocket webSocket, String rawJsonMessage)
      WebSocket入口,处理JSON字符串
      Parameters:
      webSocket - WebSocket连接
      rawJsonMessage - 收到的JSON字符串
      Returns:
      响应的JSON字符串
    • handleHttpJson

      public String handleHttpJson(String rawJsonMessage)
      Http,处理JSON字符串

      保留入口:当前版本尚未接入 HTTP 传输层,本方法暂无调用方。 它是有意保留的扩展点——协议分发与传输方式无关, 后续接入 HTTP 时应直接复用本入口,而不是另起一套解析与路由。 因此请勿将其当作"死代码"清理。

      Parameters:
      rawJsonMessage - 收到的JSON字符串
      Returns:
      响应的JSON字符串
    • parseAndHandle

      public Response parseAndHandle(BasePayload basePayload)
      业务处理核心:接收原始 JSON 字符串并解析与处理
      Returns:
      Response 处理结果