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

smart

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

1674 1 1
1个回答

walkor

一个比较简单的方法,用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, '设备返回的消息');
    }

}
年代过于久远,无法发表回答
🔝