连接后断开 AWS IoT 设备

Ind*_*dra 6 amazon-web-services amazon-cognito aws-iot

我正在开发一个 Web 应用程序,用户可以使用 AWS Cognito 登录。使用 AWS 凭证登录后,我正在连接到 AWS IoT 设备,例如

var device = AwsIot.device({ 
    clientId: clientID, 
    host: host, 
    accessKeyId: credentials.accessKeyId, 
    secretKey: credentials.secretAccessKey, 
    protocol: 'wss', 
    sessionToken: credentials.sessionToken, 
    offlineQueueing: 'false' 
}); 
Run Code Online (Sandbox Code Playgroud)

然后,一旦用户使用 AWS Cognito 从应用程序注销,使用

cognitoUser.signOut(); 
Run Code Online (Sandbox Code Playgroud)

然后注销后,我也想断开 AWS IoT 设备的连接。现在我看到即使在注销后设备仍在监听类似的事件

device.on('close', function() {}) 
device.on('error', function() {}) 
device.on('offline', function() {}) 
Run Code Online (Sandbox Code Playgroud)

有人可以指定我应该调用哪个函数来断开设备连接,以便它也不会监听这些事件。

我正在查看文档https://github.com/aws/aws-iot-device-sdk-js但我没有为此获得任何特定功能。

此外,我使用 AWS 凭证来连接 AWS IoT 设备,一旦我从 Cognito 注销,那么我认为该设备也应该自动断开连接。请让我知道这里应该采取什么方法。

Ind*_*dra 5

我从AWS IOT支持团队得到了关于这个问题的答案。

该类AwsIot.device是 MQTT 类的包装器,带有帮助程序,可协助连接到 AWS 端点。 要断开设备连接,您可以调用device.end();这将关闭您的连接并调用device.on('close'). 至于 Cognito 注销。这不会使 Cognito 已提供的用于建立连接的会话凭据失效。他们将继续有效,直到其担任角色时间到期。