用topthink/think-worker v3.0,获取不到Gateway::getAllGroupIdList
本来想做一个简单的接口输出在线群组的,但是突然发现获取不到
$data=[];
$data['im_start']=false;
$data['im_list']=[];
$clientList= Gateway::getAllClientIdList();
$data['client_list']=$clientList;
$liveGroupList= Gateway::getAllGroupIdList();
if($liveGroupList){
$data['im_start']=true;
$data['im_list']= $liveGroupList;
}
$jsonStr= json_encode($data, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
return '<pre>' . $jsonStr . '</pre>';
得到得结果是这个
{
"im_start": false,
"im_list": [],
"client_list": {
"7f00000107d00000024b": "7f00000107d00000024b",
"7f00000107d000000262": "7f00000107d000000262"
}
}
在线client列表是可以获取到的,grouplist获取不到?为啥,是我的版本过低了还是这个扩展不行?需要更换。
我看官网的示例都在onMessage回调方法下使用的,尝试了一下在onMessage 回调里面是可以获取到的,放到别的地方就获取不到了?不能单独那出来做接口使用吗?
BusinessWorker 进程可以调用到。
其它进程得手动设置 Gateway::registerAddress = '127.0.0.1:xxx'; ,xxx是register端口。
找到方案了:workerman/gatewayclient,官方也推荐的应用方式,不过还有一个双向通讯是什么概念。我了解一下。