有没有办法确定客户端是否使用客户端SDK连接?我看到如何使用JavaScript和.NET SDKS,但我在Java版本的DeviceClient中看不到任何相似之处。我错过了什么?
答案 0 :(得分:0)
我不熟悉Java SDK,但据我所知,Java SDK不支持事件触发器。
我担心您必须在发送数据之前检查连接状态,因为官方SDK会https://github.com/Azure/azure-iot-sdk-java/blob/master/device/iot-device-client/src/main/java/com/microsoft/azure/sdk/iot/device/DeviceClient.java#L250
此外,Java SDK使用循环来接收消息,但不使用MQTT订阅https://github.com/Azure/azure-iot-sdk-java/blob/master/device/iot-device-client/src/main/java/com/microsoft/azure/sdk/iot/device/DeviceClient.java#L197
所以也许你需要处理一个检查状态的时间表。
答案 1 :(得分:0)
在Java SDK中,当您发送事件时,它将被推送到等待列表中。在此列表中有一个消费和发送消息的线程。
我尝试在设备每秒发送邮件时关闭网络连接。由于等待列表上存在锁定,因此消耗线程将被卡住。该消息将保留在等待列表中。恢复连接后,将发送等待列表中的消息。
无法获得等待名单的状态。也许这里有一个解决方案,你可以维护一个处理柜台。发送消息时,递增计数器,同时注册一个将减少计数器的回调。您可以检查计数器以近似“猜测”连接状态。