怎么在其他web项目向BusinessWorker客户端发送指令,并获取结果

0

比如,向物联网设备发送“获取参数”指令,并返回参数

已邀请:

walkor

赞同来自: bean19830721

一个比较简单的方法,用gatewayClient 给设备发指令,设备返回指令结果,gatewayWorker的onMessage里接收结果并存入数据库,web端定时读下数据库,得到结果。


数据库也可以采用redis,利用redis的 publish 和subscribe,这样更实时一些。
web端代码类似:


$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
Gateway::$registerAddress = 'xxx:xx';
Gateway::sendToUid(设备id, '命令数据');
$redis->subscribe(设备id, function($instance, $channelName, $message) {
var_export($message);
die;
};

gatewayWorker 里的events.php 代码类似


class Events
{
public static function onWorkerStart()
{
global $redis;
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
}

public static function onMessage()
{
// 收到设备返回的消息
$redis->publish(设备id, '设备返回的消息');
}

}

要回复问题请先登录注册