请求接口时,代码业务里面有异步连接(AsyncConnection)时出现问题。。。

xiewen_kevin

Hi,walkor:

这个问题困扰我好些天了,想请大大给个建议,用了几年workerman了,相当稳定。最近有个物联网项目中,功能是前端页面对设备进行远程控制,我在HTTP接口业务代码中是用AsyncConnection异步向TCP服务下发控制指令的,所以设备模块应答的结果也是异步收到。此时HTTP接口响应时,页面是不知道模块是否应答成功的。 请问大大,接口业务代码里我向TCP服务发送异步请求后,如何等待拿到异步结果后,再response到前端。

1616 2 1
2个回答

latin

感觉这样就行吧?

$worker = new Worker('http://0.0.0.0:8080');
$worker->onMessage = function($http_con, $request){
    // 连硬件
    $c = new AsyncTcpConnection('....');
    $c->onConnect = function($c){
        $c->send('给硬件发的数据');
    };
    // 硬件返回数据
    $c->onMessage = function($c, $data) use ($http_con){
        // 生成http响应
        $response = new Response(200, [], json_encode($data));
        // 给浏览器发送响应
        $http_con->send(response);
        // 关闭与硬件的连接
        $c->close();
    };
    $c->connect();
};
  • 暂无评论
xiewen_kevin

谢谢,虽然这不是解决办法,但给了我解决的思路~

  • 暂无评论
年代过于久远,无法发表回答
🔝