aijinhui
2023-12-15 4269d20178cfab9253aacac15e1c02905c192428
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/**
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2020</p>
 * <p>Company: www.31gps.net</p>
 * @author chencq
 * @version 1.0
 */
package com.ruoyi.sy.gps31;
 
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
 
import com.alibaba.fastjson2.JSON;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
 
import com.gps31.push.netty.PushClient;
import com.gps31.push.netty.PushMsg;
import com.gps31.push.netty.client.TcpClient;
import com.gps31.push.util.MapUtil;
/**
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2020</p>
 * <p>Company: www.31gps.net</p>
 * @author chencq
 * @version 1.0
 */
public class PushClientImpl extends PushClient{
    private static final Log log = LogFactory.getLog(PushClientImpl.class);
 
    @Override
    public void messageReceived(TcpClient tcpClient, PushMsg pushMsg)
            throws Exception {
        if("8001".equals(pushMsg.getCmd())) {//登录应答
            String rspResult = MapUtil.getStrVal(pushMsg.getJsonMap(),"rspResult","1");
            if("0".equals(rspResult)) {//登录成功,定阅动态消息
                Map<String,Object> map = new HashMap<String,Object>();
                map.put("seq", "1");
                map.put("action", "add");
                map.put("msgIds", JSON.toJSONString(getSubCmdSet()));
                PushMsg subMsg = getInstance("0003",map);
                sendMsg(subMsg);
            }
        }else if("8002".equals(pushMsg.getCmd())){//心跳应答
 
        }else if("8003".equals(pushMsg.getCmd())){//订阅动态消息应答
            String rspResult = MapUtil.getStrVal(pushMsg.getJsonMap(),"rspResult","1");
            log.error(String.format("    订阅应答:%s", "0".equals(rspResult)?"成功":"失败"));
        }else if("0200".equals(pushMsg.getCmd())) {//定位信息
            Map<String,Object> gpsMap = pushMsg.getJsonMap();
            String carName = MapUtil.getStrVal(gpsMap, "carName","");//获取车牌号
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.println(sdf.format(new Date()));
            log.error(String.format("   ---->收到定位数据:%s",JSON.toJSONString(gpsMap)));
            /**
             *
             * 请加入三方集成方的业务逻辑
             *
             */
        }else if("0300".equals(pushMsg.getCmd())) {//报警消息
            Map<String,Object> alarmMap = pushMsg.getJsonMap();
            String carName = MapUtil.getStrVal(alarmMap, "carName","");//获取车牌号
            log.error(String.format("   ---->收到报警数据:%s",JSON.toJSONString(alarmMap)));
            /**
             *
             * 请加入三方集成方的业务逻辑
             *
             */
        }else if("0401".equals(pushMsg.getCmd())) {//透传消息
            Map<String,Object> dataMap = pushMsg.getJsonMap();
            String carName = MapUtil.getStrVal(dataMap, "carName","");//获取车牌号
            log.error(String.format("   ---->收到透传数据:%s",JSON.toJSONString(dataMap)));
            /**
             *
             * 请加入三方集成方的业务逻辑
             *
             */
        }
    }
 
    public static void main(String[] args) {
        try {
            PushClientImpl client = new PushClientImpl();
            client.setLog(true);//是否打印明文
            //client.setLogBytes(true);//是否打印网络字节流
            //client.setHost("106.14.186.44");//服务器IP
            client.setHost("116.182.15.14");//服务器IP
            client.setPort(10100);//服务器端口
            //client.setUserName("ys_admin");//系统用户名
            //client.setPwd("123456");//系统用户密码
            //client.setUserName("admin_dqard");//系统用户名
            //client.setUserName("dqard");//系统用户名
            //client.setPwd("123456");//系统用户密码
            client.setUserName("admin");//系统用户名
            client.setPwd("654321");//系统用户密码
            //client.setSubMsgIds("0200|0300");//订阅的动态消息,多个动态消息使用|辟分,当前示例是订阅  定位消息(0x0200)和报警消息(0x0300)
            client.setSubMsgIds("0200");//订阅的动态消息,多个动态消息使用|辟分,当前示例是订阅  定位消息(0x0200)和报警消息(0x0300)
            client.setDesc("测试客户端");//客户端的描述,
            client.start();
            while(true) {
                Thread.sleep(1000);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}