[add] 添加socketHandler类,提供区分内/外部的注册监听.消息回调分发等方法(未补全)

This commit is contained in:
liujing
2021-01-22 18:09:06 +08:00
parent fae386be84
commit e7bd416040
6 changed files with 100 additions and 42 deletions

View File

@@ -0,0 +1,83 @@
package com.mogo.cloud.socket;
import android.content.Context;
import android.os.SystemClock;
import com.mogo.utils.network.utils.GsonUtil;
import java.util.List;
import static com.mogo.cloud.socket.WebSocketMsgType.MSG_TYPE_ACK;
/**
* @author liujing
* @description 描述
* @since: 2021/1/22
*/
public class SocketHandler {
private static volatile SocketHandler mInstance;
private long serverTime = 0;
private long receiveMsgTime = 0;
private List<IMogoCloudSocketOnMessageListener> listenerList;
public static SocketHandler getInstance() {
if (mInstance == null) {
synchronized (SocketManager.class) {
if (mInstance == null) {
mInstance = new SocketHandler();
}
}
}
return mInstance;
}
/*
* useInner: 是否注册自己内部的监听
* */
public void initSocket(Context context, boolean useInner, String appId, IMogoCloudSocketOnMessageListener listener) {
SocketManager.getInstance().init(context, appId);
if (useInner) {
SocketManager.getInstance().registerOnMessageListener(0x040002, onMessageListener);
SocketManager.getInstance().registerOnMessageListener(0x040003, onMessageListener);
} else {
SocketManager.getInstance().registerOnMessageListener(0x040002, listener);
SocketManager.getInstance().registerOnMessageListener(0x040003, listener);
listenerList.add(listener);
}
}
private final IMogoCloudSocketOnMessageListener<String> onMessageListener = new IMogoCloudSocketOnMessageListener<String>() {
@Override
public Class<String> target() {
return String.class;
}
@Override
public void onMsgReceived(String message) {
WebSocketData webSocketData = GsonUtil.objectFromJson(message, WebSocketData.class);
int msgType = webSocketData.getMsgType();
if (msgType == MSG_TYPE_ACK.getMsgType()) {
if (webSocketData.getUtcTime() > 0) {
serverTime = webSocketData.getUtcTime();
receiveMsgTime = SystemClock.elapsedRealtime();
if (webSocketData.getUpUtcTime() > 0) {
long nextDelay = webSocketData.getUpUtcTime() - serverTime;
//todo
// MogoRTKLocation.getInstance().resetUploadDelay(nextDelay);
}
}
}
}
};
public void stop() {
//todo
// MogoRTKLocation.getInstance().unregisterRTKLocationListener();
// MogoRTKLocation.getInstance().stop();
for (int i = 0; i < listenerList.size(); i++) {
SocketManager.getInstance().unregisterOnMessageListener(0x040002, listenerList.get(i));
SocketManager.getInstance().unregisterOnMessageListener(0x040003, listenerList.get(i));
}
}
}

View File

@@ -0,0 +1,76 @@
package com.mogo.cloud.socket;
import java.io.Serializable;
public class WebSocketData implements Serializable {
private long seq;
private int msgType;
private String sn;
private String data;
private long utcTime;
private long upUtcTime;
private String cityCode;
public long getSeq() {
return seq;
}
public void setSeq(long seq) {
this.seq = seq;
}
public int getMsgType() {
return msgType;
}
public void setMsgType(int msgType) {
this.msgType = msgType;
}
public String getSn() {
return sn;
}
public void setSn(String sn) {
this.sn = sn;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public long getUtcTime() {
return utcTime;
}
public void setUtcTime(long utcTime) {
this.utcTime = utcTime;
}
public long getUpUtcTime() {
return upUtcTime;
}
public void setUpUtcTime(long upUtcTime) {
this.upUtcTime = upUtcTime;
}
public String getCityCode() {
return cityCode;
}
public void setCityCode(String cityCode) {
this.cityCode = cityCode;
}
}

View File

@@ -0,0 +1,24 @@
package com.mogo.cloud.socket;
public enum WebSocketMsgType {
MSG_TYPE_UPLINK_CAR_DATA(0,"自车与ADAS数据"),
MSG_TYPE_DOWNLINK_CAR_DATA(1,"服务端下发车辆信息"),
MSG_TYPE_ACK(3, "ACK");
private int msgType;
private String msg;
WebSocketMsgType(int msgType, String msg) {
this.msgType = msgType;
this.msg = msg;
}
public int getMsgType() {
return msgType;
}
public void setMsgType(int msgType) {
this.msgType = msgType;
}
}