异步回调中调用主进程?

lichao
$task = new AsyncTcpConnection('Text://127.0.0.1:8281');
        $task->connect();
        $task_data      =   array(
            'function'=>'login',
            'args'=>$args,
         );
        $task -> send(json_encode($task_data));
        $task -> onMessage = function ($task , $task_result) use($client_id)
         {
            $send_result=json_decode($task_result,true);
            $new_message=$send_result;
            if(!empty($new_message))
            {
               **我想在这里使用bindUid和sendToUid,但是没用。**
            }
            echo  json_encode($send_result);
            $task -> close();

        };

_我的问题?这是一个登陆接口,走的是异步,我想登陆成功后,使用bindUid和sendToUid,但是好像在异步回调里面可用,请问大大怎么解决。?_

3039 4 0
4个回答

walkor

我想在这里使用bindUid和sendToUid,但是没用。

没用的现象具体是?

  • lichao 2015-10-04

    就算是我这样写死
    //Gateway::bindUid($client_id,'2015100117125184803');
    //Gateway::sendToUid('2015100117125184803','hellohello');
    客户端还是收不到使用,gateway:sendToAll就可以,而且
    Gateway::bindUid
    Gateway::sendToUid
    这两个函数在异步中现在无效了。

walkor

你要确认下onMessage是否有调用,确认bindUid 和 sendToUid是否有调用到,并确认参数是否正确

  • lichao 2015-10-05

    onMessage我确定调用了,在里面使用gateway:sendToAll都可以,参数也无错误,我写在外面就可以发送,写在异步回调中,就没用。

walkor

好,稍后我测试下

  • 暂无评论
walkor

异步时确实无法bindUid,已经修复,重新下载一份代码即可

  • lichao 2015-10-05

    重新下载一份workerman还是所有的?

  • lichao 2015-10-05

    workerman-3.1.9-stable,我测试了,还是不可

  • walkor 2015-10-05

    bindUid 是GatewayWorker中的方法,当然是下载gatewayWorker

年代过于久远,无法发表回答
🔝