Class WebsocketManager
java.lang.Object
io.github.theword.queqiao.core.utils.WebsocketManager
WebSocket 生命周期管理器
所有权模型(单向、不允许跨层 shutdown):
WebsocketManager
owns → reconnectScheduler(共享重连调度器)
WsClient
owns → reconnectFuture / generation / retry state / reconnectInProgress
Java-WebSocket
owns → socket / read thread / write thread / connectionLostChecker
调度器在构造阶段创建(ScheduledThreadPoolExecutor 的 core 线程在首次提交任务时才启动,
因此即使未启用 Client 也无实际线程开销),只在 stop(int, String, Object) 这一永久销毁路径
关闭;stopClients() / restartClients() 绝不触碰它。
- Since:
- 0.6.11
-
Constructor Summary
ConstructorsConstructorDescriptionWebsocketManager(org.slf4j.Logger logger, com.google.gson.Gson gson, HandleCommandReturnMessageService handleCommandReturnMessageService, HandleProtocolMessage handleProtocolMessage, Config config) 构造 WebSocket 生命周期管理器 -
Method Summary
Modifier and TypeMethodDescriptionvoid重载(保留共享调度器)void分发事件到所有接收方void启动(幂等)void永久停止(幂等)
-
Constructor Details
-
WebsocketManager
public WebsocketManager(org.slf4j.Logger logger, com.google.gson.Gson gson, HandleCommandReturnMessageService handleCommandReturnMessageService, HandleProtocolMessage handleProtocolMessage, Config config) 构造 WebSocket 生命周期管理器- Parameters:
logger- 日志实现gson- Gson 实例handleCommandReturnMessageService- 命令返回消息实现handleProtocolMessage- 协议分发入口(由 QueQiaoRuntime 创建并注入)config- 配置快照(由 QueQiaoRuntime 注入)
-
-
Method Details
-
getWsClientList
-
getWsServer
-
start
启动(幂等)重复调用不会创建第二套 Client,也不会创建第二个调度器。
- Parameters:
commandReturner- 命令执行者,可为 null
-
stop
永久停止(幂等)这是唯一会销毁共享调度器的路径。
- Parameters:
code- 关闭码reason- 关闭原因commandReturner- 命令执行者,可为 null
-
restart
重载(保留共享调度器)先替换配置快照,再按新配置重建 Client 与 Server。 不允许 stop scheduler 后再复用已关闭的 scheduler。
- Parameters:
newConfig- 新的配置快照(由 QueQiaoRuntime 在 reload 时加载)commandReturner- 命令执行者,可为 null
-
sendEvent
分发事件到所有接收方线程模型:序列化与分发都在调用线程上同步完成。 这是有意为之——实测单次事件序列化约 1~2.3 µs,每 tick 100 个事件仅占 50 ms tick 预算的 0.5% 左右;而改为异步会引入"队列溢出如何处理"与 "同一连接内事件乱序/丢失"两个更难接受的问题。
低成本守卫:先取接收方快照,若既无 Client 也无 Server,直接返回, 不做无意义的序列化。
- Parameters:
event- 事件
-