比如,向物聯(lián)網(wǎng)設(shè)備發(fā)送“獲取參數(shù)”指令,并返回參數(shù)
一個(gè)比較簡(jiǎn)單的方法,用gatewayClient 給設(shè)備發(fā)指令,設(shè)備返回指令結(jié)果,gatewayWorker的onMessage里接收結(jié)果并存入數(shù)據(jù)庫(kù),web端定時(shí)讀下數(shù)據(jù)庫(kù),得到結(jié)果。
數(shù)據(jù)庫(kù)也可以采用redis,利用redis的 publish 和subscribe,這樣更實(shí)時(shí)一些。
web端代碼類似:
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
Gateway::$registerAddress = 'xxx:xx';
Gateway::sendToUid(設(shè)備id, '命令數(shù)據(jù)');
$redis->subscribe(設(shè)備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()
{
// 收到設(shè)備返回的消息
$redis->publish(設(shè)備id, '設(shè)備返回的消息');
}
}