请问GatewayWorker如何动态创建子线程处理大厅下各游戏不同请求 比如玩家进入大厅下游戏A 连接GatewayWorker websocket A 处理 玩家进入大厅下游戏B 连接GatewayWorker websocket B 处理
目前只会全部放在events.php里面中的onMessage处理
GatewayWorker 和 Workerman都是多进程单线程的,没有多线程。
因为开发者大多没有多进程开发经验,不会控制进程数、不会回收进程、不懂进程间通讯。 一般也不需要动态创建进程,需要哪些进程组,每组多少进程提前设置好最安全。 GatewayWorker 和 Workerman都不支持动态创建进程。
谢谢回复 我在主进程的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发送信息吗, 内部子进程的连接可以吗
再强调一遍,workerman和GatewayWorker不支持动态创建进程。
你这个代码不是创建子进程,只不过是在businessWorker进程启动后建立了两个websocket监听,实际上并没有创建新的进程。并且这两个监听没有什么作用,因为businessWorker只和Gateway通讯,不会和客户端通讯,即使客户端连上这两个端口也无法正常通讯。更不要说Gateway::sendToAll给客户端发消息
GatewayWorker 和 Workerman都是多进程单线程的,没有多线程。
因为开发者大多没有多进程开发经验,不会控制进程数、不会回收进程、不懂进程间通讯。
一般也不需要动态创建进程,需要哪些进程组,每组多少进程提前设置好最安全。
GatewayWorker 和 Workerman都不支持动态创建进程。
谢谢回复
我在主进程的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发送信息吗, 内部子进程的连接可以吗
再强调一遍,workerman和GatewayWorker不支持动态创建进程。
你这个代码不是创建子进程,只不过是在businessWorker进程启动后建立了两个websocket监听,实际上并没有创建新的进程。并且这两个监听没有什么作用,因为businessWorker只和Gateway通讯,不会和客户端通讯,即使客户端连上这两个端口也无法正常通讯。更不要说Gateway::sendToAll给客户端发消息