java.lang.Object
com.github.theword.queqiao.tool.websocket.WsServer

public class WsServer extends Object
Netty WebSocket 服务端。

支持两类流量:

1. WebSocket:按既有协议鉴权并处理消息

2. 非 WebSocket:可按配置转发到本地 MC 主端口

  • Constructor Details

    • WsServer

      public WsServer(InetSocketAddress address, org.slf4j.Logger logger, com.google.gson.Gson gson, String serverName, String accessToken, boolean enabled)
    • WsServer

      public WsServer(InetSocketAddress address, org.slf4j.Logger logger, com.google.gson.Gson gson, String serverName, String accessToken, boolean enabled, boolean forward)
  • Method Details

    • start

      public void start()
      启动服务端
    • isActive

      public boolean isActive()
      当前服务端是否处于活动状态。
      Returns:
      true 表示服务端正在监听
    • hasSameBinding

      public boolean hasSameBinding(String host, int port)
      判断当前实例的监听地址是否与目标地址一致。
      Parameters:
      host - 目标 host
      port - 目标 port
      Returns:
      true 表示可复用当前监听端口
    • applyRuntimeConfig

      public void applyRuntimeConfig(String serverName, String accessToken, boolean enabled, boolean forward)
      热更新运行时配置(不重启监听)。

      用于 reload 且监听地址不变场景,避免中断当前 TCP 转发连接。

      Parameters:
      serverName - 服务器名
      accessToken - 访问令牌
      enabled - 工具启用状态
      forward - 非 WebSocket 流量转发开关
    • stop

      public void stop(int timeout, String reason) throws InterruptedException
      停止服务端并释放资源
      Throws:
      InterruptedException
    • getAddress

      public InetSocketAddress getAddress()
      获取服务监听地址。

      若服务已绑定,优先返回真实绑定地址。

    • getPort

      public int getPort()
      获取服务监听端口。

      当配置端口为 0 时,返回系统分配的实际端口。

    • getConnections

      public List<InetSocketAddress> getConnections()
      获取当前活跃连接
    • broadcast

      public void broadcast(String text)
      广播文本消息到全部 WebSocket 客户端