gpt4 book ai didi

azure - 从浏览器端连接到 Azure IoT/事件中心

转载 作者:行者123 更新时间:2023-12-01 03:15:02 26 4
gpt4 key购买 nike

是否有任何 javascript sdk 或库可用于从浏览器端连接到 Azure IoT 或事件中心?

我希望避免在连接到事件中心时将消息从 Web 应用程序重定向到浏览器所涉及的延迟,而是直接从浏览器实现。

This question讨论了一种通过 Websockets 使用 AMQP 连接到 IoT/事件中心的方法,但链接已损坏。一般来说,有哪些选项或方法可用于可靠地实时监控浏览器上的数据?

最佳答案

npm install mqtt crypto-js --save

index.js

import mqtt from 'mqtt';
import CryptoJS from 'crypto-js';

var host='{iothubname}.azure-devices.net';
var deviceId = '{DeviceId}';
var sharedKey = '{DeviceKey}';
var topic ='devices/'+deviceId+'/messages/devicebound/#';

function encodeUriComponentStrict (str) {
return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {
return '%' + c.charCodeAt(0).toString(16);
});
}
function getSaSToken (hostName,deviceId,sharedKey){
var sr = encodeUriComponentStrict(hostName + '/devices/' + deviceId);
var se = Math.round(new Date().getTime() / 1000) + 24 * 3600;
var StringToSign = sr + '\n' + se;
var sig = encodeUriComponentStrict(CryptoJS.HmacSHA256(StringToSign, CryptoJS.enc.Base64.parse(sharedKey)).toString(CryptoJS.enc.Base64));
return 'SharedAccessSignature sr=' + sr + '&sig=' + sig + '&se=' + se;
}

var client = mqtt.connect({
host:host,
port:443,
path:'/$iothub/websocket?iothub-no-client-cert=true',
protocol: 'mqtts',
protocolId: 'MQTT',
protocolVersion: 4,
clientId:deviceId,
username: host+'/'+deviceId+'/api-version=2016-11-14',
password: getSaSToken(host,deviceId,sharedKey),
keepalive: 30000
})

client.on('connect',function(packet){
console.log('mqtt connected!',packet);
client.subscribe(topic);
})
client.on('reconnect',function(){
console.log('mqtt reconnected!');
})
client.on('close',function(c){
console.log('mqtt closed!',c);
})
client.on('message',function(topic, message, packet){
var string = new TextDecoder("utf-8").decode(message);
console.log('receive!',string);
})

如何获取设备 ID 和设备 key :

  1. 登录 azure
  2. 所有资源并找到您的物联网中心
  3. 设备资源管理器
  4. 点击您要连接或创建的设备

enter image description here

发送测试消息:

  1. 点击“发送消息” enter image description here

  2. 输入内容并发送 enter image description here

  3. 您将看到“接收!这是一个测试!”在浏览器控制台上

关于azure - 从浏览器端连接到 Azure IoT/事件中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49144511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com