Hi,walkor:
这个问题困扰我好些天了,想请大大给个建议,用了几年workerman了,相当稳定。最近有个物联网项目中,功能是前端页面对设备进行远程控制,我在HTTP接口业务代码中是用AsyncConnection异步向TCP服务下发控制指令的,所以设备模块应答的结果也是异步收到。此时HTTP接口响应时,页面是不知道模块是否应答成功的。 请问大大,接口业务代码里我向TCP服务发送异步请求后,如何等待拿到异步结果后,再response到前端。
感觉这样就行吧?
$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(); };
谢谢,虽然这不是解决办法,但给了我解决的思路~
感觉这样就行吧?
谢谢,虽然这不是解决办法,但给了我解决的思路~