【发布时间】:2018-11-15 21:28:47
【问题描述】:
我有一个 aws lambda 函数,它可以生成如下的 IOT websocket URL。
const v4 = require('aws-signature-v4');
const crypto = require('crypto');
const WSSURL = v4.createPresignedURL(
'GET',
process.env.IOT_ENDPOINT_HOST.toLowerCase(),
'/mqtt',
'iotdevicegateway',
crypto.createHash('sha256').update('', 'utf8').digest('hex'),
{
'key': process.env.IOT_ACCESS_KEY,
'secret': process.env.IOT_SECRET_KEY,
'protocol': 'wss',
'region': process.env.IOT_AWS_REGION,
}
);
我在客户端有 mqttjs,它使用这个 url 并尝试如下连接 web socket。
var options = {
will : {
topic : LAST_WILL_TOPIC,
payload: getMessageString(wss_userId, wss_email, wss_userType, {})
},
clientId: wss_userType + '||' + wss_userId
};
wssClient = mqtt.connect(WSSURL, options);
此代码在几个月前运行良好,但现在连接未启动并出现以下错误
failed: Error during WebSocket handshake: Unexpected response code: 403
【问题讨论】:
-
表单最近几天的错误再次开始,原因是 AWS 更改了 IOT 端点 URL。如果此错误再次发生,请仔细检查该部分。
标签: websocket mqtt iot http-status-code-403 aws-iot