我查看源码,没有找到bussworker监听的端口,除了一个异步通讯,文笔菜
1、首先 BusinesWorker 是不监听端口的,主要用于接收Gateway转发过来的事件以及数据,并默认调用Events.php中的onXXX来处理业务逻辑。 2、Gateway和 BusinesWorker 进程通讯原理【摘自手册】: (1) Register、Gateway、BusinessWorker进程启动 (2) Gateway、BusinessWorker进程启动后向Register服务进程发起长连接注册自己 (3) Register服务收到Gateway的注册后,把所有Gateway的通讯地址保存在内存中 (4) Register服务收到BusinessWorker的注册后,把内存中所有的Gateway的通讯地址发给BusinessWorker (5) BusinessWorker进程得到所有的Gateway内部通讯地址后尝试连接Gateway
接受数据就得连接gataway,那gataway返回bussiness数据不需要根据bussiness的地址及端口发包嘛,bussiness也需要自己的端口的吧
gateway开启对外地址的同时,会同时开启内部监听端口,所谓的 $gateway->lanIp,bussiness不需要自己的端口,bussiness连接的是$gateway->lanIp来通信的。
还是不太理解,bussiness没有自己的端口是如何收到包的
我说不需要自己的端口是指不需要监听服务端口,bussiness在gatewayworker中充当的是个客户端的角色,通过 AsyncTcpConnection 对 gateway 发起异步socket连接,这里bussiness自然就存在一个本机随机分配的通信端口。
懂了,谢谢大佬了
这里的onmessage应该就是收包的方法吧
正如我上面所言: bussiness通过 AsyncTcpConnection 对 gateway 发起异步socket连接
@5621: 是的
@614:谢谢了
timer定时器是判断时间戳的形式实现的吧
1、首先 BusinesWorker 是不监听端口的,主要用于接收Gateway转发过来的事件以及数据,并默认调用Events.php中的onXXX来处理业务逻辑。
2、Gateway和 BusinesWorker 进程通讯原理【摘自手册】:
(1) Register、Gateway、BusinessWorker进程启动
(2) Gateway、BusinessWorker进程启动后向Register服务进程发起长连接注册自己
(3) Register服务收到Gateway的注册后,把所有Gateway的通讯地址保存在内存中
(4) Register服务收到BusinessWorker的注册后,把内存中所有的Gateway的通讯地址发给BusinessWorker
(5) BusinessWorker进程得到所有的Gateway内部通讯地址后尝试连接Gateway
接受数据就得连接gataway,那gataway返回bussiness数据不需要根据bussiness的地址及端口发包嘛,bussiness也需要自己的端口的吧
gateway开启对外地址的同时,会同时开启内部监听端口,所谓的 $gateway->lanIp,bussiness不需要自己的端口,bussiness连接的是$gateway->lanIp来通信的。
还是不太理解,bussiness没有自己的端口是如何收到包的
我说不需要自己的端口是指不需要监听服务端口,bussiness在gatewayworker中充当的是个客户端的角色,通过 AsyncTcpConnection 对 gateway 发起异步socket连接,这里bussiness自然就存在一个本机随机分配的通信端口。
懂了,谢谢大佬了
这里的onmessage应该就是收包的方法吧
正如我上面所言: bussiness通过 AsyncTcpConnection 对 gateway 发起异步socket连接
@5621: 是的
@614:谢谢了
timer定时器是判断时间戳的形式实现的吧