From 121a5b01a2461b5d9d5c188f9dd36c2e4673db9d Mon Sep 17 00:00:00 2001
From: jinpengyong <jpy123456>
Date: Mon, 28 Sep 2020 10:41:08 +0800
Subject: [PATCH] 实时风向与因子数据从同一个websokceket获取优化
---
src/main/webapp/js/newmoralmap.js | 89 ++++++++++++-----------------
src/main/java/com/moral/webSocketServer/WebSocketServer.java | 31 +++++++--
src/main/webapp/view/newmap.jsp | 7 -
3 files changed, 61 insertions(+), 66 deletions(-)
diff --git a/src/main/java/com/moral/webSocketServer/WebSocketServer.java b/src/main/java/com/moral/webSocketServer/WebSocketServer.java
index 25ee014..f886cd2 100644
--- a/src/main/java/com/moral/webSocketServer/WebSocketServer.java
+++ b/src/main/java/com/moral/webSocketServer/WebSocketServer.java
@@ -17,12 +17,18 @@
import com.moral.common.util.ParameterUtils;
import com.moral.entity.Device;
import com.moral.service.DeviceService;
+import com.moral.util.RabbitMQUtils;
+import com.rabbitmq.client.AMQP;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
+import com.rabbitmq.client.Consumer;
+import com.rabbitmq.client.DefaultConsumer;
+import com.rabbitmq.client.Envelope;
import com.rabbitmq.client.QueueingConsumer;
import lombok.extern.slf4j.Slf4j;
+
import org.springframework.stereotype.Component;
/**
@@ -66,7 +72,7 @@
int flag = param.indexOf("&");
int regionCodeIndex = param.indexOf("_");
orgId = param.substring(0, flag);
- accountId = param.substring(flag + 1,regionCodeIndex);
+ accountId = param.substring(flag + 1, regionCodeIndex);
regionCode = param.substring(regionCodeIndex + 1);
String QUEUE_NAME = "deviceInfo_" + accountId;
@@ -79,15 +85,16 @@
try {
//������������������������������������������������
- ConnectionFactory factory = new ConnectionFactory();
+ /*ConnectionFactory factory = new ConnectionFactory();
//������MabbitMQ������������ip���������������
factory.setHost("47.96.15.25");
factory.setPort(5672);
factory.setUsername("guest");
- factory.setPassword("guest_pass");
+ factory.setPassword("guest_pass");*/
+ //Connection connection = RabbitMQUtils.getConnection();
String routingKey;
- connection = factory.newConnection();
- channel = connection.createChannel();
+ this.connection = RabbitMQUtils.getConnection();
+ channel = this.connection.createChannel();
//���������������������������������������������������������������������������������������������������������
channel.queueDeclare(QUEUE_NAME, false, false, true, null);
for (Device d : deviceList) {
@@ -95,7 +102,8 @@
channel.queueBind(QUEUE_NAME, "screens_data", routingKey);
}
//���������������������
- QueueingConsumer consumer = new QueueingConsumer(channel);
+ /*java������������*/
+ /*QueueingConsumer consumer = new QueueingConsumer(channel);
//������������������
channel.basicConsume(QUEUE_NAME, true, consumer);
@@ -104,7 +112,15 @@
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
String message = new String(delivery.getBody());
sendMessage(message);
- }
+ }*/
+ channel.basicConsume(QUEUE_NAME, false, new DefaultConsumer(channel){
+ @Override
+ public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
+ String msg = new String(body, "utf-8");
+ sendMessage(msg);
+ channel.basicAck(envelope.getDeliveryTag(), false);
+ }
+ });
} catch (Exception e) {
log.error(e.getMessage());
}
@@ -118,7 +134,6 @@
/**���������Set��� ������������������������*/
webSocketSet.remove(this);
try {
- //channel.queueDelete("deviceInfo_" + accountId);
connection.close();
} catch (IOException e) {
log.error(e.getMessage());
diff --git a/src/main/webapp/js/newmoralmap.js b/src/main/webapp/js/newmoralmap.js
index b8e706f..f6e05a6 100644
--- a/src/main/webapp/js/newmoralmap.js
+++ b/src/main/webapp/js/newmoralmap.js
@@ -218,7 +218,7 @@
var longitude = 106.638135;
var latitude = 29.709625;
point = new BMap.Point(longitude, latitude);
- }else if("���������" == regoinNames[2]){
+ } else if ("���������" == regoinNames[2]) {
var longitude = 120.332826;
var latitude = 33.772274;
point = new BMap.Point(longitude, latitude);
@@ -399,7 +399,7 @@
var timer = setTimeout(function () {
baiduMap.closeInfoWindow.apply(baiduMap, arguments);
moralMap["_closeInfoWinTimer"] = null;
- }, 1200);
+ }, 500);
moralMap["_closeInfoWinTimer"] = timer;
}
moralMap.clearOverlays = function () {
@@ -948,56 +948,47 @@
}
var mouseOverHandle = option['mouseover'];
moralMarker.addEventListener("mouseover", function () {
- var obj = {};
- obj['methodName'] = 'deliverMac';
- obj['mac'] = option['mac'];
- var objStr = JSON.stringify(obj);
- if (!!window['external'] && !!window['external']['callWin']) {
- window['external'].callWin(objStr);
- } else {
- alert(objStr);
- }
-
moralMap.showSensors = function (jsonData) {
- /* var deviceSensors = jsonData;
- var mac = deviceSensors["mac"];
- if (mac == option['mac']) {*/
+ var deviceSensors = jsonData;
+ var mac = deviceSensors["mac"];
if (!jsonData.hasOwnProperty('mac')) {
infoWindow.setContent("");
infoWindow.redraw();
} else {
- var adressOutHtml = '<div style="min-height:20px;overflow:auto;max-height:480px;font-size: 12px;" onmouseover="moralMap.clearCloseInfoWindow()" onmouseout="moralMap.closeInfoWindow()">';
- var y, m, d, h, mm, s;
- var date = new Date($.now());
- y = 1900 + date.getYear();
- m = "0" + (date.getMonth() + 1);
- d = "0" + date.getDate();
- h = "0" + date.getHours();
- mm = "0" + date.getMinutes();
- s = "0" + date.getSeconds();
- date = y + "-" + m.substring(m.length - 2, m.length) + "-" + d.substring(d.length - 2, d.length) + " " + h.substring(h.length - 2, h.length) + ":" + mm.substring(mm.length - 2, mm.length) + ":" + s.substring(s.length - 2, s.length);
- adressOutHtml += '<p style="height: 18px;line-height: 18px">' + "��������� " + date + " </p>";
- for (var prop in jsonData) {
- if (jsonData.hasOwnProperty(prop) && prop != 'ver' && prop != 'methodName' && prop != 'mac' && prop != 'time') {
- for (var key in sensorsDescriptionMap) {
- if (prop == key) {
- var sensorsDescription = sensorsDescriptionMap[key];
- }
- }
- for (var key in sensorsUnitMap) {
- if (prop == key) {
- var sensorsUnit = sensorsUnitMap[key];
- if (sensorsUnit == null) {
- sensorsUnit = "";
+ if (mac == option['mac']) {
+ var adressOutHtml = '<div style="min-height:20px;overflow:auto;max-height:480px;font-size: 12px;" onmouseover="moralMap.clearCloseInfoWindow()" onmouseout="moralMap.closeInfoWindow()">';
+ var y, m, d, h, mm, s;
+ var date = new Date($.now());
+ y = 1900 + date.getYear();
+ m = "0" + (date.getMonth() + 1);
+ d = "0" + date.getDate();
+ h = "0" + date.getHours();
+ mm = "0" + date.getMinutes();
+ s = "0" + date.getSeconds();
+ date = y + "-" + m.substring(m.length - 2, m.length) + "-" + d.substring(d.length - 2, d.length) + " " + h.substring(h.length - 2, h.length) + ":" + mm.substring(mm.length - 2, mm.length) + ":" + s.substring(s.length - 2, s.length);
+ adressOutHtml += '<p style="height: 18px;line-height: 18px">' + "��������� " + date + " </p>";
+ for (var prop in jsonData) {
+ if (jsonData.hasOwnProperty(prop) && prop != 'ver' && prop != 'methodName' && prop != 'mac' && prop != 'time') {
+ for (var key in sensorsDescriptionMap) {
+ if (prop == key) {
+ var sensorsDescription = sensorsDescriptionMap[key];
}
}
+ for (var key in sensorsUnitMap) {
+ if (prop == key) {
+ var sensorsUnit = sensorsUnitMap[key];
+ if (sensorsUnit == null) {
+ sensorsUnit = "";
+ }
+ }
+ }
+ adressOutHtml += ('<p style="height: 18px;line-height: 18px">' + sensorsDescription + "���" + jsonData[prop] + sensorsUnit + "</p>");
}
- adressOutHtml += ('<p style="height: 18px;line-height: 18px">' + sensorsDescription + "���" + jsonData[prop] + sensorsUnit + "</p>");
}
+ adressOutHtml += "</div>";
+ infoWindow.setContent(adressOutHtml);
+ infoWindow.redraw();
}
- adressOutHtml += "</div>";
- infoWindow.setContent(adressOutHtml);
- infoWindow.redraw();
}
}
// }
@@ -1008,14 +999,6 @@
});
moralMarker.addEventListener("mouseout", function () {
- var obj = {};
- obj['methodName'] = 'stopDeliverMac';
- var objStr = JSON.stringify(obj);
- if (!!window['external'] && !!window['external']['callWin']) {
- window['external'].callWin(objStr);
- } else {
- alert(objStr);
- }
moralMap.closeInfoWindow();
});
@@ -1122,15 +1105,15 @@
if (longitude < bounds.northeastLng && longitude > bounds.southwestLng && latitude < bounds.northeastLat && latitude > bounds.southwestLat) {
markers.push(oldmarker);
}
- if("���������"===option["monitorPoint"]["description"]){
+ if ("���������" === option["monitorPoint"]["description"]) {
var icon05 = new BMap.Icon("/img/ico05.png", new BMap.Size(50, 50));
var mark05 = new BMap.Marker(new BMap.Point(option["monitorPoint"]["longitude"], option["monitorPoint"]["latitude"]), {icon: icon05});
markers.push(mark05);
- }else if("���������"===option["monitorPoint"]["description"]){
+ } else if ("���������" === option["monitorPoint"]["description"]) {
var icon06 = new BMap.Icon("/img/ico06.png", new BMap.Size(50, 50));
var mark06 = new BMap.Marker(new BMap.Point(option["monitorPoint"]["longitude"], option["monitorPoint"]["latitude"]), {icon: icon06});
markers.push(mark06);
- }else if("���������"===option["monitorPoint"]["description"]){
+ } else if ("���������" === option["monitorPoint"]["description"]) {
var icon08 = new BMap.Icon("/img/ico08.png", new BMap.Size(50, 50));
var mark08 = new BMap.Marker(new BMap.Point(option["monitorPoint"]["longitude"], option["monitorPoint"]["latitude"]), {icon: icon08});
markers.push(mark08);
diff --git a/src/main/webapp/view/newmap.jsp b/src/main/webapp/view/newmap.jsp
index d411bc4..0648bcc 100644
--- a/src/main/webapp/view/newmap.jsp
+++ b/src/main/webapp/view/newmap.jsp
@@ -710,8 +710,9 @@
moralMap.showSensors(JSON.parse(JSON.parse(msg.data)));
}*/
if ($("#close").html() == "CloseMq") {
- ws.close();
+ ws.close(JSON.parse(msg.data));
}
+ moralMap.showSensors(JSON.parse(JSON.parse(msg.data)));
};
//������������
@@ -722,7 +723,6 @@
ws.onerror = function () {
$("#close").html("websocket������������");
};
-
}
})(jQuery);
@@ -839,9 +839,6 @@
} else if ("RefreshState" == methodName) {
var states = jsonData.states;
moralMap.refreshState(states);
- } else if ("DeliverSensors" == methodName) {
- $("#close").html(methodName);
- moralMap.showSensors(jsonData);
} else if ("CloseMq" == methodName) {
$("#close").html(methodName);
}
--
Gitblit v1.8.0