127 lines
3.3 KiB
JavaScript
127 lines
3.3 KiB
JavaScript
|
import {stationwebsocketurl} from "../../../public/js/url.js";
|
|||
|
import { loginInfo } from "../js/index.js";
|
|||
|
import {connectWebsocket} from "../js/index.js";
|
|||
|
import { updatePushButtonEvent } from "../js/marker/pushButtonEventMarker.js";
|
|||
|
let wsTimer = null;
|
|||
|
let stationWebsocketConnect = null;
|
|||
|
let iotDeviceHash = {};//保存所有的物联网设备
|
|||
|
function stationWebsocket() {
|
|||
|
return new Promise((resolve, reject) => {
|
|||
|
if (stationWebsocketConnect == null) {
|
|||
|
stationWebsocketConnect = new WebSocket(stationwebsocketurl);
|
|||
|
stationWebsocketConnect.onopen = function (evt) {
|
|||
|
if (wsTimer != null) {
|
|||
|
clearInterval(wsTimer);
|
|||
|
wsTimer = null;
|
|||
|
wsFlag=60;
|
|||
|
}
|
|||
|
resolve({
|
|||
|
"msg": "微型站websocket连接成功",
|
|||
|
"code": 0,
|
|||
|
"stationWebsocketConnect": stationWebsocketConnect
|
|||
|
})
|
|||
|
var messageObj = {
|
|||
|
"msgcode": 100,
|
|||
|
"msgname": "session",
|
|||
|
"message": loginInfo["session"]
|
|||
|
}
|
|||
|
var msg = JSON.stringify(messageObj);
|
|||
|
stationWebsocketConnect.send(msg);
|
|||
|
setInterval(()=>{
|
|||
|
let messageObj = {
|
|||
|
"msgcode": 99,
|
|||
|
"msgname": "hb",
|
|||
|
"message":"hb"
|
|||
|
}
|
|||
|
if(stationWebsocketConnect!=null){
|
|||
|
stationWebsocketConnect.send(JSON.stringify(messageObj));
|
|||
|
}
|
|||
|
},5000)
|
|||
|
};
|
|||
|
stationWebsocketConnect.onclose = function (evt) {
|
|||
|
console.log("微站的websocket已经断开onclose")
|
|||
|
stationWebsocketConnect.close();
|
|||
|
websocketReconnection();
|
|||
|
};
|
|||
|
stationWebsocketConnect.onerror = function (evt) {
|
|||
|
console.log("微站的websocket已经断开onerror")
|
|||
|
stationWebsocketConnect.close();
|
|||
|
websocketReconnection();
|
|||
|
}
|
|||
|
stationWebsocketConnect.onmessage = function (evt) {
|
|||
|
var data = JSON.parse(evt.data);
|
|||
|
var msgcode = data["msgcode"];
|
|||
|
var message = data["message"];
|
|||
|
switch (msgcode) {
|
|||
|
case 1020://18.接受别处登录的消息
|
|||
|
//kickout(message);
|
|||
|
break;
|
|||
|
case 103://获取传感器的数据
|
|||
|
wsStationSensorList(message);
|
|||
|
break;
|
|||
|
case 1035://报警按钮
|
|||
|
strangerAlarm(message);
|
|||
|
break
|
|||
|
case 1041://天网
|
|||
|
console.log(message);
|
|||
|
break;
|
|||
|
case 1042://行为
|
|||
|
console.log(message);
|
|||
|
break;
|
|||
|
default:
|
|||
|
break;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
})
|
|||
|
}
|
|||
|
|
|||
|
function websocketReconnection(){
|
|||
|
stationWebsocketConnect = null;
|
|||
|
wsTimer = null;
|
|||
|
if (wsTimer == null) {
|
|||
|
|
|||
|
wsTimer = setInterval(function () {
|
|||
|
connectWebsocket();
|
|||
|
wsFlag--;
|
|||
|
if(wsFlag==0){
|
|||
|
layer.msg("网络中断,请重新连接...");
|
|||
|
clearInterval(wsTimer);
|
|||
|
wsTimer = null;
|
|||
|
}
|
|||
|
}, 5000)
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//获取传感器的列表
|
|||
|
function wsStationSensorList(message) {
|
|||
|
var list = message["list"];
|
|||
|
var pagepro = message["pagepro"];
|
|||
|
if(list!=null){
|
|||
|
for (var iot = 0; iot < list.length; iot++) {
|
|||
|
var deviceid=list[iot]["deviceid"];
|
|||
|
iotDeviceHash[deviceid]=list[iot];
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
if (pagepro == "end" || pagepro == "start-end") {
|
|||
|
//列表推送结束
|
|||
|
//查询物联网的报警
|
|||
|
//显示物联网的撒点
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
//报警按钮
|
|||
|
function strangerAlarm(message){
|
|||
|
//移动设备告警,也会转到微站的websocket,这里接受只取按钮的
|
|||
|
for(var i=0;i<message.length;i++){
|
|||
|
var alarmType=message[i]["alarmType"];
|
|||
|
if(alarmType!="sos.mdev"){
|
|||
|
updatePushButtonEvent(message[i]);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
export {
|
|||
|
stationWebsocket,
|
|||
|
iotDeviceHash
|
|||
|
}
|