Gatewayworker动态开启多个子进程需求

yuanxin

请问GatewayWorker如何动态创建子线程处理大厅下各游戏不同请求
比如玩家进入大厅下游戏A 连接GatewayWorker websocket A 处理
玩家进入大厅下游戏B 连接GatewayWorker websocket B 处理

目前只会全部放在events.php里面中的onMessage处理

4391 3 1
3个回答

walkor

GatewayWorker 和 Workerman都是多进程单线程的,没有多线程。

因为开发者大多没有多进程开发经验,不会控制进程数、不会回收进程、不懂进程间通讯。
一般也不需要动态创建进程,需要哪些进程组,每组多少进程提前设置好最安全。
GatewayWorker 和 Workerman都不支持动态创建进程。

  • 暂无评论
yuanxin

谢谢回复
我在主进程的onWorkerStart创建子进程
$new_worker = new \GatewayWorker\BusinessWorker('Websocket://192.168.10.220:5678');
来专门处理登录请求
$new_worker2 = new \GatewayWorker\BusinessWorker('Websocket://192.168.10.220:5688');
处理游戏大厅请求
能连接上, 但是不能调用Gateway::sendToAll('hi')或者Gateway::sendToCurrentClient( 'test' );
只有主进程能调用Gateway发送信息吗, 内部子进程的连接可以吗

  • 暂无评论
walkor

再强调一遍,workerman和GatewayWorker不支持动态创建进程。

你这个代码不是创建子进程,只不过是在businessWorker进程启动后建立了两个websocket监听,实际上并没有创建新的进程。并且这两个监听没有什么作用,因为businessWorker只和Gateway通讯,不会和客户端通讯,即使客户端连上这两个端口也无法正常通讯。更不要说Gateway::sendToAll给客户端发消息

  • 暂无评论
年代过于久远,无法发表回答
🔝