25

से संदेशों को भेजने/प्राप्त करने के लिए एडब्ल्यूएस आईओटी का उपयोग कैसे करें हम वेब ब्राउज़र से संदेशों को भेजने के लिए अमेज़ॅन वेब सर्विसेज इंटरनेट चीजों (एडब्ल्यूएस आईओटी) का उपयोग करने की कोशिश कर रहे हैं (उदाहरण:। एडब्ल्यूएस को देखते हुए IoT जावास्क्रिप्ट हम उम्मीद करते हैं कि इस संभव है ...वेब ब्राउज़र

हम एडब्ल्यूएस IoT प्रलेखन पर खोज की है लेकिन केवल सर्वर साइड उदाहरण(जो एडब्ल्यूएस रहस्य/कुंजी का पर्दाफाश पाया का समर्थन करता है ...)

क्या काम कर रहे हैं एडब्ल्यूएस आईओटी का उपयोग करने के लिए उदाहरण या ट्यूटोरियल ब्राउज़र में वेबस्केट/एमक्यूटीटी के माध्यम से संदेश भेजने/प्राप्त करने के लिए (उदाहरण: एडब्ल्यूएस कॉग्निटो के साथ प्रमाणीकरण)? धन्यवाद!

उत्तर

19

यहां एक नमूना है जो सदस्यता में कनेक्ट, प्रकाशित और प्रतिक्रिया करने के लिए जेएस में एक कॉग्निटो पहचान पूल का उपयोग करता है।

// Configure Cognito identity pool 
AWS.config.region = 'us-east-1'; 
var credentials = new AWS.CognitoIdentityCredentials({ 
    IdentityPoolId: 'us-east-1:your identity pool guid', 
}); 

// Getting AWS creds from Cognito is async, so we need to drive the rest of the mqtt client initialization in a callback 
credentials.get(function(err) { 
    if(err) { 
     console.log(err); 
     return; 
    } 
    var requestUrl = SigV4Utils.getSignedUrl('wss', 'data.iot.us-east-1.amazonaws.com', '/mqtt', 
     'iotdevicegateway', 'us-east-1', 
     credentials.accessKeyId, credentials.secretAccessKey, credentials.sessionToken); 
    initClient(requestUrl); 
}); 

function init() { 
    // do setup stuff 
} 

// Connect the client, subscribe to the drawing topic, and publish a "hey I connected" message 
function initClient(requestUrl) { 
    var clientId = String(Math.random()).replace('.', ''); 
    var client = new Paho.MQTT.Client(requestUrl, clientId); 
    var connectOptions = { 
     onSuccess: function() { 
      console.log('connected'); 

      // subscribe to the drawing 
      client.subscribe("your/mqtt/topic"); 

      // publish a lifecycle event 
      message = new Paho.MQTT.Message('{"id":"' + credentials.identityId + '"}'); 
      message.destinationName = 'your/mqtt/topic'; 
      console.log(message); 
      client.send(message); 
     }, 
     useSSL: true, 
     timeout: 3, 
     mqttVersion: 4, 
     onFailure: function() { 
      console.error('connect failed'); 
     } 
    }; 
    client.connect(connectOptions); 

    client.onMessageArrived = function (message) { 

     try { 
      console.log("msg arrived: " + message.payloadString); 
     } catch (e) { 
      console.log("error! " + e); 
     } 

    }; 
} 

Documentation for the credentials.get call, here

सदस्यता लेने/प्रकाशन के साथ ही के लिए अपने IAM भूमिका को अधिकृत करने के लिए याद रखें।

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "iot:Connect" 
      ], 
      "Resource": "*" 
     }, 
     { 
      "Effect": "Allow", 
      "Action": "iot:Receive", 
      "Resource": "*" 
     }, 
     { 
      "Effect": "Allow", 
      "Action": "iot:Subscribe", 
      "Resource": [ 
       "arn:aws:iot:us-east-1::your/mqtt/topic" 
      ] 
     }, 
     { 
      "Effect": "Allow", 
      "Action": "iot:Publish", 
      "Resource": [ 
       "arn:aws:iot:us-east-1::your/mqtt/topic" 
      ] 
     } 
    ] 
} 
+7

sigv4 फ़ंक्शन [यहां] (http://draw.kyleroche.com/sigv4utils.js) संदर्भ के लिए है। –

+0

मुझे निम्न त्रुटि मिल रही है: aws-sdk-2.7.1.js: 6834 असीमित त्रुटि: पल परिभाषित नहीं किया गया है (...) callListeners @ aws-sdk-2.7.1.js: 6834emit @ aws-sdk-2.7.1 .js: 6810emit @ aws-sdk-2.7.1.js: 4054transition @ aws-sdk-2.7.1.js: 3831runTo @ aws-sdk-p. जैसा कि मैंने aws sdk को भी अद्यतन किया है, लेकिन अभी भी वही त्रुटि मिल रही है जिससे आप मेरी मदद कर सकते हैं या यदि संभव हो तो aws-sdk.js फ़ाइल साझा करें जिसका आप उपयोग कर रहे हैं। –

+0

आपने "iotdevicegateway" का उपयोग किया है, आप "iotdevicegateway" के रूप में पैरामीटर के रूप में क्या गुजर रहे हैं? या तो हमें संसाधन आईडी या डिवाइसआईडी पास करना होगा? –

1

मामले में किसी और को एक समाधान की तलाश में है: here's a tutorial है कि कैसे एक ReactJS सामने के अंत Serverless और WebSockets का उपयोग कर एडब्ल्यूएस IOT पर में रीयल-टाइम अपडेट प्राप्त करने के लिए एक सरल चैट एप्लिकेशन के माध्यम से प्रदर्शित करता है कि यहां एक नमूना है। ट्यूटोरियल का स्रोत कोड on Github उपलब्ध है।

+1

इस उदाहरण में कॉग्निटो समर्थन शामिल नहीं है। यह स्पष्ट नहीं है: उदाहरण जावास्क्रिप्ट स्रोत में कुंजी का पर्दाफाश करता है? –

संबंधित मुद्दे