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

0

Hi,walkor:


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

已邀请:

latin - 挨踢男

赞同来自: xiewen_kevin

感觉这样就行吧?


$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 - PHP是艺术...

赞同来自:

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

要回复问题请先登录注册