From 00e38ff225eb948f5234934afc01aa54c94e0de6 Mon Sep 17 00:00:00 2001 From: 于紫祥_1901 <email@yuzixiang_1910> Date: Sat, 10 Oct 2020 11:29:36 +0800 Subject: [PATCH] update --- src/main/java/com/moral/webSocketServer/BSTestWebsocketServer.java | 62 ++++++++++++++++++++++++------ 1 files changed, 49 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/moral/webSocketServer/BSTestWebsocketServer.java b/src/main/java/com/moral/webSocketServer/BSTestWebsocketServer.java index 570884f..9b42ef0 100644 --- a/src/main/java/com/moral/webSocketServer/BSTestWebsocketServer.java +++ b/src/main/java/com/moral/webSocketServer/BSTestWebsocketServer.java @@ -18,6 +18,7 @@ import javax.websocket.server.ServerEndpoint; import java.io.IOException; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -25,6 +26,13 @@ @Slf4j @ServerEndpoint("/web/testWebSocket/{param}") @Component +/** +* @Description: ���������������websocket + * @Param: + * @return: + * @Author: ������������ + * @Date: 2020/9/30 + */ public class BSTestWebsocketServer { public static DeviceService deviceService; @@ -51,6 +59,7 @@ private final String exchange = "screens_data"; private static Map<String, Sensor> sensors; + @PostConstruct @@ -85,30 +94,39 @@ paramMap.put("regionCode", regionCode); ParameterUtils.getRegionType4RegionCode(paramMap); List<Device> deviceList = deviceService.queryDevice(paramMap); + Map<String,Device> deviceMap = new HashMap<>(); try { Connection connection = RabbitMQUtils.getConnection(); final Channel channel = connection.createChannel(); //������������������ String queue = channel.queueDeclare().getQueue(); - //������������������������routingKey������������ String routingKey = ""; for (Device d : deviceList) { + deviceMap.put(d.getMac(),d); routingKey = orgId + "." + d.getMac(); channel.queueBind(queue, exchange, routingKey); } + + //������������,��������������������� - channel.basicQos(1);//��������������������������� + channel.basicQos(30);//��������������� channel.basicConsume(queue, false, new DefaultConsumer(channel) { @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { + //������MQ������������������������������������������������������������ Map message = (Map) JSON.parse((String) JSON.parse(new String(body))); sendWindInfo(message); + + //���������������������������������������mac���������������������������������mac������������ if(mac!=null&&(!mac.equals(0))) - sendDeviceInfo(message); - channel.basicAck(envelope.getDeliveryTag(), false); + sendDeviceInfo(message,deviceMap); + + //������������ + channel.basicAck(envelope.getDeliveryTag(), true); + //������socket������������������ if (!webSocketMap.containsKey(accountId)) { RabbitMQUtils.closeConnectionChannel(connection, channel); @@ -132,7 +150,6 @@ @OnMessage public void onMessage(String message, Session session) { if (!ObjectUtils.isEmpty(message)) { - System.out.println(message); Map<String, Object> map = JSON.parseObject(message); this.mac = (String) map.get("mac"); } @@ -154,7 +171,13 @@ } } - //��������������������� + /** + * @Description: ���������������������socket��������������������������������� + * @Param: [param] + * @return: void + * @Author: ��������� + * @Date: 2020/9/30 + */ private void sendWindInfo(Map<String, Object> param) { try { Map<String, Object> map = new HashMap<>(); @@ -168,22 +191,35 @@ } } - //������mac������device������ - private void sendDeviceInfo(Map<String, Object> param) { + /** + * @Description: ������������mac������accountid���������������������mac������������������ + * @Param: [param] + * @return: void + * @Author: ��������� + * @Date: 2020/9/30 + */ + private void sendDeviceInfo(Map<String, Object> param,Map<String,Device> deviceMap) { String deviceMac = (String) param.get("mac"); if (mac.equals(deviceMac)) { try { - Map<String, Object> map = new HashMap<>(); + Map<String,Object> sortMap = new LinkedHashMap<>(); + + //��������������������������������� + Device device =deviceMap.get(mac); + sortMap.put("������",device.getName()); + sortMap.put("������",device.getAddress()); + + + //��������������������������������� 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); + sortMap.put(sensor.getName(), value + unit); } }); - String mac = (String) param.get("mac"); - map.put("mac", mac); - sendMessage(JSON.toJSONString(map)); + + sendMessage(JSON.toJSONString(sortMap)); } catch (IOException e) { log.error("������mac������������������������"); } -- Gitblit v1.8.0