package com.cloud.retrieve.websocket;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.serializer.SerializerFeature;
|
import com.cloud.common.utils.DateUtil;
|
import com.cloud.retrieve.service.EsDataService;
|
import jdk.nashorn.internal.runtime.logging.Loggable;
|
import jdk.nashorn.internal.runtime.logging.Logger;
|
import lombok.extern.slf4j.Slf4j;
|
import org.java_websocket.WebSocket;
|
import org.java_websocket.handshake.ClientHandshake;
|
import org.java_websocket.server.WebSocketServer;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Component;
|
|
import java.net.InetSocketAddress;
|
import java.sql.Timestamp;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
@Slf4j
|
//@Component
|
public class AlarmSocketServer extends WebSocketServer {
|
|
@Autowired
|
private EsDataService esDataService;
|
|
private Map<WebSocket, Object> conns = new HashMap<>();
|
|
// public AlarmSocketServer(){
|
// super(new InetSocketAddress(7678));
|
//
|
// new Thread(){
|
// @Override
|
// public void run(){
|
//
|
// Object startTime =null;
|
// Map<String,Object> map = new HashMap<>();
|
//
|
// try {
|
// Thread.sleep(2000);
|
// AlarmSocketServer.this.start();
|
// } catch (InterruptedException e) {
|
// e.printStackTrace();
|
// }
|
//
|
// while(true){
|
// try {
|
// Thread.sleep(2000);
|
// JSONObject alarmData = esDataService.findEsAllAlarmDataByPage(1, 200,null,null);
|
//
|
// for(WebSocket conn : conns.keySet()){
|
// try {
|
// String resourceDescriptor = conn.getResourceDescriptor();
|
// String[] params = resourceDescriptor.split("/");
|
// String method = params[1];
|
//
|
// try {
|
// if(conns.get(conn) != null && conns.get(conn) instanceof Map){
|
// startTime = ((Map<String, Object>)conns.get(conn)).get("startTime");
|
// map = (Map<String, Object>)(((Map<String, Object>)conns.get(conn)).get("map"));
|
// if(map == null){
|
// map = new HashMap<>();
|
// }
|
// }
|
// } catch (Exception e) {
|
// e.printStackTrace();
|
// startTime = null;
|
// map = new HashMap<>();
|
// }
|
//
|
// } catch (Exception e) {
|
// e.printStackTrace();
|
// try {
|
// if(conn.isClosed()){
|
// conns.remove(conn);
|
// }
|
// } catch (Exception e1) {
|
// e1.printStackTrace();
|
// }
|
// }
|
//
|
// try {
|
// Map<String, Object> curMap = new HashMap<>();
|
// if((alarmData !=null && alarmData.get("total")!= null && Integer.parseInt(alarmData.getString("total")) > 0)){
|
// JSONArray curAlarmList = alarmData.getJSONArray("equList");
|
//
|
// List<Object> sendList = new ArrayList<>();
|
// Timestamp lastLikeDate = null;
|
// if(startTime !=null){//socket获取过数据
|
// lastLikeDate = Timestamp.valueOf(startTime.toString());
|
// for(int i=0;i < curAlarmList.size();i++){
|
// JSONObject obj = (JSONObject) curAlarmList.get(i);
|
// Timestamp sTime = Timestamp.valueOf(obj.getString("likeDate"));
|
// String recordId = obj.get("Id").toString();
|
// curMap.put(recordId, obj);
|
// if(sTime.after(lastLikeDate) && !map.containsKey(recordId)){
|
// sendList.add(obj);
|
// }
|
// }
|
// }else{
|
// for(int i=0;i < curAlarmList.size();i++){
|
// JSONObject obj = (JSONObject) curAlarmList.get(i);
|
// String recordId = obj.get("Id").toString();
|
// curMap.put(recordId, obj);
|
// sendList.add(obj);
|
// }
|
//
|
// }
|
//
|
// if(sendList.size() > 0){
|
// JSONObject sData = new JSONObject();
|
// sData.put("total",alarmData.getString("total"));
|
// sData.put("data", sendList);
|
// log.info("websocket推送es数据:"+sendList);
|
// conn.send(JSON.toJSONString(sData, SerializerFeature.WriteMapNullValue).toString());
|
//
|
// Map<String, Object> connMap = new HashMap<>();
|
// lastLikeDate = Timestamp.valueOf(((JSONObject)sendList.get(sendList.size()-1)).getString("likeDate"));
|
// log.info("websocket推送es数据 startTime:"+lastLikeDate);
|
// connMap.put("startTime", lastLikeDate);
|
// connMap.put("map", curMap);
|
// conns.put(conn, connMap);
|
//
|
// }else{
|
// /* JSONObject sData = new JSONObject();
|
// sData.put("total",alarmData.getString("total"));
|
// sData.put("data", sendList);
|
// conn.send(JSON.toJSONString(sData, SerializerFeature.WriteMapNullValue).toString());
|
// log.info("sendList.size=0");*/
|
// }
|
// }
|
// } catch (Exception e) {
|
// e.printStackTrace();
|
// }
|
// }
|
// } catch (InterruptedException e) {
|
// e.printStackTrace();
|
// }
|
// }
|
// }
|
// }.start();
|
// }
|
@Override
|
public void onOpen(WebSocket conn, ClientHandshake handshake) {
|
try {
|
log.info("建立连接");
|
conns.put(conn, new HashMap<String, Object>());
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
@Override
|
public void onClose(WebSocket conn, int code, String reason, boolean remote) {
|
try {
|
log.info("连接关闭");
|
conns.remove(conn);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
@Override
|
public void onMessage(WebSocket conn, String message) {
|
}
|
|
@Override
|
public void onError(WebSocket conn, Exception ex) {
|
log.info("exception:"+ex.getMessage());
|
}
|
|
@Override
|
public void onStart() {
|
}
|
}
|