您知道是否可以使用在浏览器中运行的 javascript 客户端(即没有节点 js)通过 Microsoft Azure 和 IoT Hub 检索设备到云的消息?
据我了解,目前这是不可能的,但我想确保(即所有当前的 API 只能在服务器端工作)。
Edit1:REST API 可能是尝试这样做的明显选择;但是,通过手动请求尝试了这些 API,似乎响应没有提供 allow-access-control-origin 标头,因此由于 CORS,我无法从 ajax 调用它们。
您知道是否可以使用在浏览器中运行的 javascript 客户端(即没有节点 js)通过 Microsoft Azure 和 IoT Hub 检索设备到云的消息?
据我了解,目前这是不可能的,但我想确保(即所有当前的 API 只能在服务器端工作)。
Edit1:REST API 可能是尝试这样做的明显选择;但是,通过手动请求尝试了这些 API,似乎响应没有提供 allow-access-control-origin 标头,因此由于 CORS,我无法从 ajax 调用它们。
更新:示例代码已按 Azure IoT Hub 团队的要求删除,他们不喜欢用户从浏览器连接到 IoT Hub ( https://github.com/Azure/azure-iot-sdk-node/issues/112 #issuecomment-338073636)。
抱歉,此答案中的链接断开。
这似乎是一个老问题,但是,我发现仍然没有人能给出正确的答案。
简而言之,有没有办法在浏览器中读取 IoT Hub D2C 消息?答案是肯定的!
您不应该使用 RESTful API 来循环检查消息,而应使用 AMQP over WebSockets。
在开始之前,您必须知道 IoT Hub 有两个端,设备端和服务端。对于设备端,您使用 HTTP、AMQP 和 MQTT 连接到 IoT Hub,但是,对于服务端,您只能使用 AMQP 连接到 IoT Hub。
幸运的是,Red Hat 已经编写了一个基于 WebSockets 节点的 AMQP 模块,您可以做一些简单的工作使其在浏览器中工作。
您可以从https://github.com/grs/rhea了解有关 AMQP 节点模块的更多信息。
此外,我们还制作了一个基于 Web 的 D2C 消息接收工具https://iotdevtool.com/service/,您可以从https://blogs.msdn.microsoft.com/zhiqing/2017/03/了解更多信息16/connect-to-azure-event-hub-in-browser-using-amqp-over-websockets/。
我自己没有尝试过,但我的理解是可以使用IoT Hub REST API在 JavaScript 中检索云到设备的消息。