From 1fde1270af7b37209a2b51a214229bacf80662f9 Mon Sep 17 00:00:00 2001 From: kaiyu <404897439@qq.com> Date: Mon, 28 Sep 2020 16:04:29 +0800 Subject: [PATCH] 添加设备状态 --- src/main/java/com/moral/webSocketServer/BSWebsocketServer.java | 27 ++++++++++++++++++++------- 1 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/moral/webSocketServer/BSWebsocketServer.java b/src/main/java/com/moral/webSocketServer/BSWebsocketServer.java index acd222b..7329c34 100644 --- a/src/main/java/com/moral/webSocketServer/BSWebsocketServer.java +++ b/src/main/java/com/moral/webSocketServer/BSWebsocketServer.java @@ -46,7 +46,6 @@ private String regionCode; - private final String exchange = "screens_data"; private static Map<String, Sensor> sensors; @@ -68,8 +67,8 @@ public void onOpen(Session session, @PathParam("param") String param) { this.session = session; String[] params = param.split("&"); - this.orgId = params[1]; this.accountId = params[0]; + this.orgId = params[1]; this.regionCode = params[2]; if (webSocketMap.containsKey(accountId)) { @@ -99,13 +98,18 @@ } //������������,��������������������� + channel.basicQos(1);//��������������������������� channel.basicConsume(queue, false, new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { Map message = (Map) JSON.parse((String) JSON.parse(new String(body))); - message = messageFormat(message); + message = messageFormat(message,deviceList); sendMessage(JSON.toJSONString(message)); channel.basicAck(envelope.getDeliveryTag(), false); + //������socket������������������ + if (!webSocketMap.containsKey(accountId)) { + RabbitMQUtils.closeConnectionChannel(connection,channel); + } } }); } catch (IOException e) { @@ -142,17 +146,26 @@ } } - //���MQ������������������������������������ - private Map<String,Object> messageFormat( Map<String,Object> param) { + //���MQ��������������������������������������������������������������� + private Map<String,Object> messageFormat( Map<String,Object> param,List<Device> deviceList) { Map<String, Object> map = new HashMap<>(); - param.forEach((key, value) -> { ; + param.forEach((key, value) -> { Sensor sensor = sensors.get(key); if (!ObjectUtils.isEmpty(sensor)) { String unit = ObjectUtils.isEmpty(sensor.getUnit())?"":(String)sensor.getUnit(); map.put(sensor.getName(),value+unit); } }); - map.put("mac",param.get("mac")); + String mac = (String) param.get("mac"); + for (Device device : deviceList) { + if(mac.equals(device.getMac())){ + map.put("������",device.getLatitude()); + map.put("������",device.getLongitude()); + map.put("������",device.getState()); + break; + } + } + map.put("mac",mac); return map; } -- Gitblit v1.8.0