如何才能让所有businessworker都收到一个Server的消息并处理!?

zhouciming

一个Server连接了gatewayworker中的gate, 发了个消息,如何才能让所有businessworker都收到这个消息并处理呢?
 
根据框架,应该只有最初选定的worker才会收到这个消息并处理,可是我现在的需求是想让所有worker都能处理,因为并不清楚最初客户端连接被哪个worker处理了(我想让那个worker关闭这个客户端连接)!

2570 2 0
2个回答

喵了个咪

任何一个businessworker调用Gateway::closeClient($client_id) 都可以关闭对应的连接,不用考虑之前是在哪个businessworker进程处理的。一般来说之前连接在哪个businessworker进程处理的,后续连接的消息啥的都是在那个businessworker进程处理,除非你自己设定了gateway的消息路由。

phpcreeper

两个问题:
1、gateway收到客户端消息以后,策略是随机选择一个可用的worker来转发处理的,关闭客户端时,当时连的是哪个worker,那就由哪个worker负责关闭,换句话,是可以区分出来的,需要自己想办法区分,比如每个worker都有自己独立的进程ID。
2、框架策略是路由随机选择一个可用的worker, 所以直接是没有办法让所有的worker都能收到消息的。

年代过于久远,无法发表回答
×
🔝