我查看源碼,沒(méi)有找到bussworker監(jiān)聽(tīng)的端口,除了一個(gè)異步通訊,文筆菜
1、首先 BusinesWorker 是不監(jiān)聽(tīng)端口的,主要用于接收Gateway轉(zhuǎn)發(fā)過(guò)來(lái)的事件以及數(shù)據(jù),并默認(rèn)調(diào)用Events.php中的onXXX來(lái)處理業(yè)務(wù)邏輯。
2、Gateway和 BusinesWorker 進(jìn)程通訊原理【摘自手冊(cè)】:
(1) Register、Gateway、BusinessWorker進(jìn)程啟動(dòng)
(2) Gateway、BusinessWorker進(jìn)程啟動(dòng)后向Register服務(wù)進(jìn)程發(fā)起長(zhǎng)連接注冊(cè)自己
(3) Register服務(wù)收到Gateway的注冊(cè)后,把所有Gateway的通訊地址保存在內(nèi)存中
(4) Register服務(wù)收到BusinessWorker的注冊(cè)后,把內(nèi)存中所有的Gateway的通訊地址發(fā)給BusinessWorker
(5) BusinessWorker進(jìn)程得到所有的Gateway內(nèi)部通訊地址后嘗試連接Gateway
接受數(shù)據(jù)就得連接gataway,那gataway返回bussiness數(shù)據(jù)不需要根據(jù)bussiness的地址及端口發(fā)包嘛,bussiness也需要自己的端口的吧
gateway開(kāi)啟對(duì)外地址的同時(shí),會(huì)同時(shí)開(kāi)啟內(nèi)部監(jiān)聽(tīng)端口,所謂的 $gateway->lanIp,bussiness不需要自己的端口,bussiness連接的是$gateway->lanIp來(lái)通信的。
還是不太理解,bussiness沒(méi)有自己的端口是如何收到包的
我說(shuō)不需要自己的端口是指不需要監(jiān)聽(tīng)服務(wù)端口,bussiness在gatewayworker中充當(dāng)?shù)氖莻€(gè)客戶端的角色,通過(guò) AsyncTcpConnection 對(duì) gateway 發(fā)起異步socket連接,這里bussiness自然就存在一個(gè)本機(jī)隨機(jī)分配的通信端口。