Amazon web services 同时使用AWS物联网获取多个设备状态的问题

Amazon web services 同时使用AWS物联网获取多个设备状态的问题,amazon-web-services,aws-iot,Amazon Web Services,Aws Iot,我有一个30个物联网设备的列表,我试图在页面加载时在网页中显示每个设备的状态。我正在使用AWS物联网设备SDK进行此操作 我一开始创造了阴影。然后我用deviceId数组运行一个循环,尝试使用唯一的deviceId作为对象名将每个设备注册到对象阴影中,然后在register回调中,我尝试用对象名调用get方法以获取初始状态。我在状态事件中添加了一个侦听器 这对于少数设备来说效果很好,get方法返回有效的客户机令牌,但是在10-12个设备之后,作为get方法的响应,我会得到null,因此对于这些设

我有一个30个物联网设备的列表,我试图在页面加载时在网页中显示每个设备的状态。我正在使用AWS物联网设备SDK进行此操作

我一开始创造了阴影。然后我用deviceId数组运行一个循环,尝试使用唯一的deviceId作为对象名将每个设备注册到对象阴影中,然后在register回调中,我尝试用对象名调用get方法以获取初始状态。我在状态事件中添加了一个侦听器

这对于少数设备来说效果很好,get方法返回有效的客户机令牌,但是在10-12个设备之后,作为get方法的响应,我会得到null,因此对于这些设备也不会触发status事件

我的代码如下:

for (var i = 0; i < me.deviceList.length; i++) {
    var deviceId = me.deviceList[i].DeviceId;
    awsIotThing.register(deviceId, {}, function() {
        var token = client.thing.get(deviceId);
         console.log('thingName', thingName, token);
    });
}
如果是异步方法调用问题,我也尝试了一些超时

for (var i = 0; i < me.deviceList.length; i++) {
    var deviceId = me.deviceList[i].DeviceId;
    $timeout(function(){
        awsIotThing.register(deviceId, {}, function() {
            var token = client.thing.get(deviceId);
            console.log('thingName', thingName, token);
         });
    }, 1000*i);
}
但我还是犯了同样的错误

我已经附上了浏览器控制台的屏幕截图,您将看到它最初获得了客户端令牌,它侦听状态事件,并且设备状态也在应用程序中被修改,但是在几个设备之后,它开始作为get事件的响应变为null,因此状态事件也不会被触发


您可以在启用连接索引的情况下使用震源组索引,并搜索设备ID。在结果中,您可以检查连接性


此外,您还可以使用带查询连接的搜索来搜索所有连接的设备。已连接:true

不确定您要完成什么,但您是否看到AWS物联网生命周期事件?我已经为我的用例构建了一个web应用程序,它基于这些主题来显示设备状态@dvd86:实际上我并不是在检查设备是否连接。或者主题是否已订阅。设备的状态根据设备中配置的特定条件而变化。基于此,我将显示绿色、黄色和红色。因此,我尝试获取要显示的初始状态,然后在订阅之后等待消息事件,以更新状态(如果有任何更改)。