From 30d07fbe902f3013a65a7c00fa141b119610a8f7 Mon Sep 17 00:00:00 2001
From: kaiyu <404897439@qq.com>
Date: Tue, 22 Sep 2020 08:34:54 +0800
Subject: [PATCH] Merge branch 'master' of http://blit.7drlb.com:8888/r/screen_api_v2

---
 src/main/java/com/moral/webSocketServer/WebSocketServer.java |   49 +++++++++++++++++++++++++++++++++++++------------
 1 files changed, 37 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/moral/webSocketServer/WebSocketServer.java b/src/main/java/com/moral/webSocketServer/WebSocketServer.java
index 38ef281..c6531e2 100644
--- a/src/main/java/com/moral/webSocketServer/WebSocketServer.java
+++ b/src/main/java/com/moral/webSocketServer/WebSocketServer.java
@@ -1,6 +1,9 @@
 package com.moral.webSocketServer;
 
 import java.io.IOException;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.concurrent.CopyOnWriteArraySet;
 
 import javax.websocket.OnClose;
@@ -11,7 +14,9 @@
 import javax.websocket.server.PathParam;
 import javax.websocket.server.ServerEndpoint;
 
-import com.moral.service.MonitorPointService;
+import com.moral.common.util.ParameterUtils;
+import com.moral.entity.Device;
+import com.moral.service.DeviceService;
 import com.rabbitmq.client.Channel;
 import com.rabbitmq.client.Connection;
 import com.rabbitmq.client.ConnectionFactory;
@@ -29,14 +34,20 @@
 @Component
 public class WebSocketServer {
 
-    public static MonitorPointService monitorPointService;
+    public static DeviceService deviceService;
 
     // ������������������������������������������������������������������������������
     private Session session;
 
     private String orgId;
 
+    private String accountId;
+
     private String regionCode;
+
+    private Connection connection;
+
+    private Channel channel;
 
     // ������session���������������������������
     private static CopyOnWriteArraySet<WebSocketServer> webSocketSet = new CopyOnWriteArraySet<WebSocketServer>();
@@ -52,24 +63,33 @@
         //������������������������������������������������
         webSocketSet.add(this);
         int flag = param.indexOf("&");
+        int regionCodeIndex = param.indexOf("_");
         orgId = param.substring(0, flag);
-        regionCode = param.substring(flag + 1);
-        String QUEUE_NAME = "deviceInfo";
+        accountId = param.substring(flag + 1,regionCodeIndex);
+        regionCode = param.substring(regionCodeIndex + 1);
+        String QUEUE_NAME = "deviceInfo_" + accountId;
+        Map<String, Object> paramMap = new HashMap<String, Object>();
+        paramMap.put("orgId", orgId);
+        paramMap.put("regionCode", regionCode);
+        ParameterUtils.getRegionType4RegionCode(paramMap);
+        List<Device> deviceList = deviceService.queryDevice(paramMap);
         try {
             //������������������������������������������������
             ConnectionFactory factory = new ConnectionFactory();
             //������MabbitMQ������������ip���������������
-            factory.setHost("172.16.206.8");
+            factory.setHost("47.96.15.25");
             factory.setPort(5672);
             factory.setUsername("guest");
             factory.setPassword("guest_pass");
-            String routingKey = orgId+".*";
-            Connection connection = factory.newConnection();
-            Channel channel = connection.createChannel();
+            String routingKey;
+            connection = factory.newConnection();
+            channel = connection.createChannel();
             //���������������������������������������������������������������������������������������������������������
             channel.queueDeclare(QUEUE_NAME, false, false, true, null);
-            channel.queueBind(QUEUE_NAME,"screens_data",routingKey);
-
+            for (Device d : deviceList) {
+                routingKey = orgId + "." + d.getMac();
+                channel.queueBind(QUEUE_NAME, "screens_data", routingKey);
+            }
             //���������������������
             QueueingConsumer consumer = new QueueingConsumer(channel);
             //������������������
@@ -81,7 +101,7 @@
                 String message = new String(delivery.getBody());
                 sendMessage(message);
             }
-        }catch (Exception e){
+        } catch (Exception e) {
             log.error(e.getMessage());
         }
     }
@@ -93,11 +113,16 @@
     public void onClose() {
         /**���������Set��� ������������������������*/
         webSocketSet.remove(this);
+        try {
+            channel.queueDelete("deviceInfo_" + accountId);
+            connection.close();
+        } catch (IOException e) {
+            log.error(e.getMessage());
+        }
     }
 
     @OnMessage
     public void onMessage(String message) {
-        System.out.println(message);
         for (WebSocketServer webSocketServer : webSocketSet) {
             webSocketServer.sendMessage(message);
         }

--
Gitblit v1.8.0