基于 WebSocket 协议的 AWS IoT MQTT

Posted

技术标签:

【中文标题】基于 WebSocket 协议的 AWS IoT MQTT【英文标题】:AWS IoT MQTT over WebSocket Protocol 【发布时间】:2016-05-22 14:12:41 【问题描述】:

我一直在关注 AWS IoT 文档,尝试开始使用 MQTT 教程,网址为 http://docs.aws.amazon.com/iot/latest/developerguide/protocols.html#mqtt-ws 在 Web 应用程序中设置与 AWS IoT 的 WebSocket 连接。第一步是通过向按照教程中的步骤创建的端点发出 GET 请求来启动 WebSocket 连接,但我收到此错误:

XMLHttpRequest cannot load <my endpoint> Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.

我想知道是否有人遇到过这个错误,如果有,他们是如何解决的?

这是代码https://github.com/dwyl/learn-aws-iot/blob/2c8035728ec8228e296580c8714f3f7ace870fbe/src/js/components/App.js的链接

【问题讨论】:

失败的 GET 请求是对 describe-endpoint API 还是打开 WebSocket?如果尝试打开 WebSocket,您是使用支持 WebSockets 的 javascript 客户端还是向端点发出正常的 HTTP 请求? 我正在通过 XMLHttpRequest 发出一个普通的 HTTP 请求,以使用格式为 wss://<endpoint>.iot.<region>.amazonaws.com/mqtt 的 URL 打开 Websocket,该 URL 已使用亚马逊签名版本 4 进行了签名 【参考方案1】:

这是我如何打开频道的示例。我正在使用 Cognito unauth 角色作为订阅者。我也在使用 JS Paho 客户端。

http://draw.kyleroche.com/main.js

【讨论】:

谢谢!你能分享你的SigV4Utils.getSignedUrl函数吗? 是的,如果你能分享这个 utils 函数那就太好了。似乎在文档中的任何地方都找不到它 查看here了解正在使用的实用功能。 更多信息在docs。【参考方案2】:

AWS 实验室还在此处发布了一个 MQTT over WebSockets 参考示例:https://github.com/awslabs/aws-iot-examples

【讨论】:

以上是关于基于 WebSocket 协议的 AWS IoT MQTT的主要内容,如果未能解决你的问题,请参考以下文章

如何为 WebSocket 协议配置 AWS ELB 和 Nginx? [关闭]

如何在 AWS Elastic Beanstalk 服务器上使用 nginx 启用 WebSocket?

html 基于AWS IoT的无服务器JS-Webapp Pub / Sub演示

使用 AWS 和 Elastic Beanstalk 的 Websocket

AWS IOT MQTT:在 chrome 中出现错误 ERR_CERT_SYMANTEC_LEGACY

评测基于websocket协议的压力测试