var option = { //mqtt客户端的id,这里面应该还可以加上其他参数,具体看官方文档 clientId: 'mqttjs_' + (Math.random() * 1000000).toString(), timeout: 5000, useSSL: false } var href = window.location.href; var path = window.location.pathname; let alarmBasicUrl = href.slice(0, href.indexOf(path)); //"ws://localhost:8384/mqtt" let alarmMqttUrl = "ws:" + alarmBasicUrl.slice(alarmBasicUrl.indexOf("//")) + "/mqtt"; var alarmMqttClient = mqtt.connect(alarmMqttUrl, option); alarmMqttClient.on('connect', function () { console.log("alarm bar connected to mqtt server successfully"); //alarmMqttClient.subscribe('/sys/+/+/thing/event/OnAlarm/+', function(err) { alarmMqttClient.subscribe('/+/+/thing/event/OnAlarm/+', function(err) { if (err) { console.log("subscribe OnAlarm event failed, error info:"+err); } }); alarmMqttClient.subscribe('/+/+/thing/event/OnGenericAlarm/+', function (err) { if (err) { console.log("failed to subsecribe OnGenericAlarm event"); } }); }); alarmMqttClient.on('message', function (topic, message) { var reg = RegExp(/OnAlarm/); if (topic.toString().match(reg)) { ProcessAlarmInformations(JSON.parse(message.toString())); } else if (topic.toString().match(RegExp(/OnGenericAlarm/))) { //console.log("OnGenericAlarm Received"); ProcessGenericAlarm(JSON.parse(message.toString())); } }); function ProcessGenericAlarm(message){ if (message === null) { console.log("Invalid generic alarm message received"); return; } if (Array.isArray(message)) { message.forEach(function (alarm) { var temp = { "Key": alarm.Title + alarm.Category + alarm.Severity, "Description": alarm.Title, "OccurTime": null, "Module": alarm.Category, "Severity": alarm.Severity, "Action": alarm.Action, "Acked": false }; AddAlarmInfomation(JSON.stringify(temp)); }); } else { var temp = { "Key": message.Title + message.Category + message.Severity, "Description": message.Title, "OccurTime": null, "Module": message.Category, "Severity": message.Severity, "Action": message.Action, "Acked": false }; AddAlarmInfomation(JSON.stringify(temp)); } } function ProcessAlarmInformations(message) { if (message == null || message.Alarms == null || !Array.isArray(message.Alarms)) { console.log("Invalid alarm message received"); return; } message.Alarms.forEach(function(alarm) { var temp = { "Key": alarm.TankNumber + alarm.Type, "Description": alarm.Description, "OccurTime": alarm.CreatedTimeStamp, "Module": "ATG", "Severity": alarm.Priority, "Action": null, "Acked":false }; AddAlarmInfomation(JSON.stringify(temp)); }); } //message is a json string function AddAlarmInfomation(message) { $.ajax({ url: "/AlarmBar/AddInformation", contentType: 'application/json', data: message, type: 'post', success: function (res) { //console.log("Alarm information added successfully"); }, error: function (msg) { console.log(msg); } }); } //the key should be the same as it used when added into alarm bar function RemoveAlarmInfomationByKey(key) { $.ajax({ url: "/AlarmBar/RemoveInformation?key="+key, contentType: 'application/json', //data: message, type: 'post', success: function (res) { //console.log("Alarm information removed successfully, the key is:"+key); }, error: function (msg) { console.log(msg); } }); }