Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AMQJS0011E无效状态未连接。AWS物联网核心_Javascript_Aws Iot - Fatal编程技术网

Javascript AMQJS0011E无效状态未连接。AWS物联网核心

Javascript AMQJS0011E无效状态未连接。AWS物联网核心,javascript,aws-iot,Javascript,Aws Iot,我正试图拥有某种实时仪表盘,可以订阅AWS物联网核心主题,也可以发布 我在网上找到了一些东西,但我想不出来 这就是我目前拥有的: function p4(){} p4.sign = function(key, msg) { const hash = CryptoJS.HmacSHA256(msg, key); return hash.toString(CryptoJS.enc.Hex); }; p4.sha256 = function(msg) { const hash

我正试图拥有某种实时仪表盘,可以订阅AWS物联网核心主题,也可以发布

我在网上找到了一些东西,但我想不出来

这就是我目前拥有的:

function p4(){}
p4.sign = function(key, msg) {
    const hash = CryptoJS.HmacSHA256(msg, key);
    return hash.toString(CryptoJS.enc.Hex);
};
p4.sha256 = function(msg) {
    const hash = CryptoJS.SHA256(msg);
    return hash.toString(CryptoJS.enc.Hex);
};
p4.getSignatureKey = function(key, dateStamp, regionName, serviceName) {
    const kDate = CryptoJS.HmacSHA256(dateStamp, 'AWS4' + key);
    const kRegion = CryptoJS.HmacSHA256(regionName, kDate);
    const kService = CryptoJS.HmacSHA256(serviceName, kRegion);
    const kSigning = CryptoJS.HmacSHA256('aws4_request', kService);
    return kSigning;
};
function getEndpoint() {
    const REGION = "eu-west-1";
    const IOT_ENDPOINT = "blablablabla-ats.iot.eu-west-1.amazonaws.com";
    // your AWS access key ID
    const KEY_ID = "My-key";
    // your AWS secret access key
    const SECRET_KEY = "my-access-token";
    // date & time
    const dt = (new Date()).toISOString().replace(/[^0-9]/g, "");
    const ymd = dt.slice(0,8);
    const fdt = `${ymd}T${dt.slice(8,14)}Z`
    const scope = `${ymd}/${REGION}/iotdevicegateway/aws4_request`;
    const ks = encodeURIComponent(`${KEY_ID}/${scope}`);
    let qs = `X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=${ks}&X-Amz-Date=${fdt}&X-Amz-SignedHeaders=ho
    const req = `GET\n/mqtt\n${qs}\nhost:${IOT_ENDPOINT}\n\nhost\n${p4.sha256('')}`;
    qs += '&X-Amz-Signature=' + p4.sign(
        p4.getSignatureKey( SECRET_KEY, ymd, REGION, 'iotdevicegateway'),
        `AWS4-HMAC-SHA256\n${fdt}\n${scope}\n${p4.sha256(req)}`
    );
    return `wss://${IOT_ENDPOINT}/mqtt?${qs}`;
}
// gets MQTT client
function initClient() {
    const clientId = Math.random().toString(36).substring(7);
    const _client = new Paho.MQTT.Client(getEndpoint(), clientId);
    // publish method added to simplify messaging
    _client.publish = function(topic, payload) {
        let payloadText = JSON.stringify(payload);
        let message = new Paho.MQTT.Message(payloadText);
        message.destinationName = topic;
        message.qos = 0;
        _client.send(message);
    }
    return _client;
}
function getClient(success) {
    if (!success) success = ()=> console.log("connected");
    const _client = initClient();
    const connectOptions = {
        useSSL: true,
        timeout: 3,
        mqttVersion: 4,
        onSuccess: success
    };
    _client.connect(connectOptions);
    return _client;
}
let client = {};
function init() {
    client = getClient();
    client.onMessageArrived = processMessage;
    client.onConnectionLost = function(e) {
        console.log(e);
    }
}
function processMessage(message) {
    let info = JSON.parse(message.payloadString);
    const publishData = {
        retailer: retailData,
        order: info.order
    };
    client.publish("sc/delivery", publishData);
}
$(document).ready(() => {
    init();
    client.subscribe("sc/orders/");
});
我总是犯同样的错误<代码>AMQJS0011E无效状态未连接。,但我确实在chrome的“请求”窗格中看到存在连接或其他连接。。。我做错了什么

我没有看到任何日志