Hi,walkor:
這個問題困擾我好些天了,想請大大給個建議,用了幾年workerman了,相當(dāng)穩(wěn)定。最近有個物聯(lián)網(wǎng)項(xiàng)目中,功能是前端頁面對設(shè)備進(jìn)行遠(yuǎn)程控制,我在HTTP接口業(yè)務(wù)代碼中是用AsyncConnection異步向TCP服務(wù)下發(fā)控制指令的,所以設(shè)備模塊應(yīng)答的結(jié)果也是異步收到。此時HTTP接口響應(yīng)時,頁面是不知道模塊是否應(yīng)答成功的。 請問大大,接口業(yè)務(wù)代碼里我向TCP服務(wù)發(fā)送異步請求后,如何等待拿到異步結(jié)果后,再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('給硬件發(fā)的數(shù)據(jù)');
};
// 硬件返回數(shù)據(jù)
$c->onMessage = function($c, $data) use ($http_con){
// 生成http響應(yīng)
$response = new Response(200, [], json_encode($data));
// 給瀏覽器發(fā)送響應(yīng)
$http_con->send(response);
// 關(guān)閉與硬件的連接
$c->close();
};
$c->connect();
};