我有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,
}
);
Run Code Online (Sandbox Code Playgroud)
我在客户端有mqttjs使用此URL并尝试连接web套接字如下.
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);
Run Code Online (Sandbox Code Playgroud)
这个代码在几个月之前就完美了,但是现在连接没有启动并且出现以下错误
failed: Error during WebSocket handshake: Unexpected response code: 403
Run Code Online (Sandbox Code Playgroud)