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">' + "���������&nbsp;" + date + "&nbsp;</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">' + "���������&nbsp;" + date + "&nbsp;</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