TcpConnection::$connections查询不到链接

neoone180

问题描述

这里写描述
workman tcp服务开启,有client A和B,我使用B跟服务过程中,通过TcpConnection::$connections查询tcp服务跟A的链接,有时候能查询到,有时候查询不到。

326 1 0
1个回答

walkor

如果开了多个进程,每个进程的 TcpConnection::$connections 是隔离的,不是共享的。
例如a连到进程A,b连到进程B,a从TcpConnection::$connections看不到b的连接对象。
只开一个进程试下。

  • neoone180 2023-08-15

    多谢回复,刚才看了下手册,估计得使用gateway + workman来解决转发问题。

  • neoone180 2023-08-16

    想听下您的建议,现在在做充电桩,tcp协议长连接,不知道GatewayWorker能不能满足需求?现在使用的是workman,但是主动给充电桩发命令使用了一个client,发给服务端,然后服务端找到对应的充电桩链接con, 如果是多个进程,所以就出现了现在这个问题:链接不一定在同一个进程,转发失败。现在临时解决方案是workman只开启了一个进程,所以能转发成功,底层的event-loop:\Workerman\Events\Event,就怕最后处理延时大。现在想用GatewayWorker来改进一下。想听下您的想法。

  • walkor 2023-08-16

    物联网项目用gatewayWorker好些

  • neoone180 2023-08-16

    感谢感谢

  • neoone180 2023-08-16

    您好,我把gatewayworker库composer进yii2框架里,担心一个问题,gatewayworker中的events是否可以使用yii2里面的数据库链接。

  • neoone180 2023-08-16

    看了两个例子,有一个疑问:YourApp中的Events类的3个on方法是怎么被调用的?应该是被BusinessWorker调用的吧?

  • neoone180 2023-08-16

    知道了,public $eventHandler = 'Events';

  • neoone180 2023-08-16

    现在被调用的方式不再仅仅是函数名,只要拿到函数指针(C语言),或者全局实体(静态)方法体(面向对象语言)也是可以的。

🔝