看完兩個手冊,Gatewaywork好用,還有個問題,需要在bussinessWorker進(jìn)程onWorkerStart時使用到AsyncTcpConnection異步連接類,并在AsyncTcpConnection的Onmessage回調(diào)函數(shù)中組播處理后的數(shù)據(jù),如何在events.php中使用AsyncTcpConnection,并在AsyncTcpConnection中使用sendToGroup組播函數(shù)。
有沒有好的方法或思路?
因?yàn)锳syncTcpConnection的連接是一直保持在整個Gatewaywork生命周期的,直接在start_businessworker.php無法直接調(diào)用Gateway::sendToGroup(),在Events好像也沒法直接創(chuàng)建AsyncTcpConnection。
找到了,謝謝。在events.php中也有個businessWorker進(jìn)程的onWorkerStart 事件,可以實(shí)現(xiàn),但是如果設(shè)置了多個businessWorker進(jìn)程,會啟動多個onWorkerStart 事件,這就導(dǎo)致會創(chuàng)建多個AsyncTcpConnection鏈接,而我只需要也只能保持一個AsyncTcpConnection鏈接,應(yīng)該在哪里創(chuàng)建這個AsyncTcpConnection鏈接呢?并且需要在AsyncTcpConnection里實(shí)現(xiàn)sendToGroup
手冊:http://doc3.workerman.net/worker-development/workerid.html
可以根據(jù)容器id來設(shè)置異步鏈接,比如只在0號businessWorker進(jìn)程設(shè)置異步鏈接
class Events {
public static function ($businessWorker) {
if ($businessWorker->id == 0) {
$con = new AsyncTcpConnection('.....');
}
}
...
}
可用,謝謝,具體性能測試后再貼上來,翻遍所有手冊,因?yàn)間w允許一個client加入多個廣播組,沒看到可以有函數(shù)可以調(diào)某個client所加入的組,因?yàn)闃I(yè)務(wù)要求client只能加入一個組,好像只能先遍歷所有廣播組,再getClientSessionsByGroup找出已經(jīng)加入的組,然后leaveGroup,再joinGroup新的組,好像沒有效率的樣子。