首页 > 解决方案 > Web 套接字握手错误 AWS IOT

问题描述

当我尝试使用 aws-iot-python-sdk 连接到 AWS IOT 时,出现此 WebSocket 握手错误。我正在使用 WebSocket + MQTT 版本发布和接收数据。非常奇怪的是,它在几个小时前工作正常,没有任何代码更改,只是开始抛出错误,我很困惑发生了什么?是 AWS IOT 本身还是我身边发生了什么事!!!

我用来连接 AWS IOT 的代码。

from AWSIoTPythonSDK.MQTTLib import AWSIoTMQTTClient
from config import IOT_ENDPOINT, IOT_CREDENTIAL_PATH

def connect(mqttClientId):
  try:
    myMQTTClient = AWSIoTMQTTClient(mqttClientId, useWebsocket=True)
    myMQTTClient.configureEndpoint(IOT_ENDPOINT, 443)
    myMQTTClient.configureCredentials(IOT_CREDENTIAL_PATH)

    myMQTTClient.configureAutoReconnectBackoffTime(1, 32, 20)
    # Infinite offline Publish queueing
    myMQTTClient.configureOfflinePublishQueueing(-1)
    myMQTTClient.configureDrainingFrequency(2)  # Draining: 2 Hz
    myMQTTClient.configureConnectDisconnectTimeout(10)  # 10 sec
    myMQTTClient.configureMQTTOperationTimeout(5)  # 5 sec

    myMQTTClient.connect()
    return myMQTTClient
  except Exception as error:
    print(error)
    print "No Internet Connection... Can't connect AWS IOT"

谢谢你。

标签: amazon-web-servicesaws-sdkaws-iot

解决方案


Looks like your credentials issued by STS has been expired. To solve this you will need to refresh each time the connection goes offline:

creds = provider.load()
awsiot.configureIAMCredentials(...)

More information you can take a look on this issue Disconnect followed by Websocket Handshake Error #215


推荐阅读