GatewayWorker 定时器

sanergo

1.如果是onConnect时启动一个定时器定时查询数据(因为客户端没有主动上报),连接关闭时删除这个定时器。但是当进程reload时应当怎么处理,定时器应该是当前进程管理的吧
2.如果在onWorkerStart时启动一个定时器处理这个进程的所有连接,reload时怎么获取这个进程处理的所有连接(client_id)

144 1 0
1个回答

walkor

onWorkerStart时启动一个全局定时器处理所有连接好一些。GatewayWorker提供了丰富的接口,可以按照组获取所有连接信息,也可以获取全部连接信息

  • sanergo 2024-03-05

    我的意思是能否获取到当前进程的所有连接信息,不是说按照组来区分,每个进程有一个计时器来处理当前进程的连接查询,关键是怎么能在reload的时候获取当前进程的所有连接

  • sanergo 2024-03-05

    现在的做法是在onConnect时保存client_id,然后当前进程的计时器处理保存的这些连接,但是reload时会重启进程,只能保存到外部吗?比如redis,数据库之类的地方?

  • sanergo 2024-03-05

    保存到外部好像也不行,只能通过外部的计时器调用Gateway::sendToAll而不是BusinessWorker进程内部处理吗?

  • walkor 2024-03-06

    reload后businessWorker进程退出重启了,就没有当前进程所属连接的说法了。连接都在gateway,gateway需要处理业务时才会选择一个businessWorker将消息转发过来。

🔝