package com.dayu.rechargeqh.net;
|
|
import android.content.Context;
|
import android.text.TextUtils;
|
import android.util.Log;
|
|
import com.dayu.rechargeqh.activity.HomeActivity;
|
import com.dayu.rechargeqh.dao.BaseDaoSingleton;
|
import com.dayu.rechargeqh.dbBean.AdminDataBean;
|
import com.easysocket.EasySocket;
|
import com.easysocket.entity.OriginReadData;
|
import com.easysocket.entity.SocketAddress;
|
import com.easysocket.interfaces.conn.ISocketActionListener;
|
import com.easysocket.interfaces.conn.SocketActionListener;
|
import com.dayu.rechargeqh.MyApplication;
|
import com.easysocket.utils.HexUtil;
|
import com.tencent.bugly.crashreport.CrashReport;
|
|
|
/**
|
* Copyright (C), 2022,
|
* Author: zuo
|
* Date: 2022/2/8 21:30
|
* Description: Socket通信
|
*/
|
public class SocketNet {
|
public static SocketNet socketNet;
|
SocketCallBack myCallBack;
|
// byte[] dataMessage;
|
boolean isTest = false;
|
Context mContext;
|
|
public static SocketNet getInstance() {
|
if (socketNet == null) {
|
socketNet = new SocketNet();
|
if (socketNet.socketActionListener != null) {
|
|
}
|
}
|
return socketNet;
|
}
|
|
|
/**
|
* 发送一个的消息,
|
*/
|
public void sendTestMessage(byte[] dataMessage, SocketCallBack callBack) {
|
myCallBack = callBack;
|
isTest = false;
|
// 发送
|
// EasySocket.getInstance().upMessage(dataMessage);
|
if (EasySocket.getInstance().getDefconnection() != null) {
|
// EasySocket.getInstance().disconnect(false);
|
// EasySocket.getInstance().connect();
|
// if (EasySocket.getInstance().getDefconnection().getConnectionStatus()== SocketStatus.SOCKET_CONNECTED){
|
EasySocket.getInstance().upMessage(dataMessage);
|
// }else {
|
//
|
// }
|
|
// this.dataMessage = dataMessage;
|
} else {
|
MyApplication.myApplication.initEasySocket(false, null);
|
}
|
}
|
|
|
/**
|
* 测试socket是否连接通畅
|
*
|
* @param context
|
*/
|
public void isConnect(Context context) {
|
Log.i("SocketActionListener", "测试连接");
|
isTest = true;
|
mContext = context;
|
if (EasySocket.getInstance().getDefOptions().getSocketAddress() != null && !MyApplication.myApplication.isDoInitMachine) {
|
// EasySocket.getInstance().disconnect(false);
|
// EasySocket.getInstance().connect();
|
} else {
|
// ToastUtil.show(mContext, "Socket地址为空");
|
}
|
}
|
|
|
public interface CreateBack {
|
void Success();
|
|
void error();
|
}
|
|
/**
|
* socket行为监听
|
*/
|
public ISocketActionListener socketActionListener = new SocketActionListener() {
|
/**
|
* socket连接成功
|
* @param socketAddress
|
*/
|
@Override
|
public void onSocketConnSuccess(SocketAddress socketAddress) {
|
Log.i("SocketActionListener1111", "连接成功");
|
MyApplication.myApplication.isConncet = true;
|
try {
|
AdminDataBean adminData = BaseDaoSingleton.getInstance(MyApplication.myApplication).adminDao().findFirst();
|
Log.i("SocketActionListener1111", "isDoInitMachine==" + MyApplication.myApplication.isDoInitMachine + "");
|
if (!MyApplication.myApplication.isDoInitMachine) {
|
Log.i("SocketActionListener1111", "isDoInitMachine");
|
if (MyApplication.myApplication.ipBean != null && adminData != null) {
|
if (!TextUtils.isEmpty(adminData.getAddressCode())) {
|
Log.i("SocketActionListener1111", "initMachineRequestBean");
|
MyApplication.myApplication.initMachineRequestBean(MyApplication.myApplication.ipBean.getIp(), MyApplication.myApplication.ipBean.getPort(), adminData.getAddressCode());
|
|
}
|
}
|
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
CrashReport.postCatchedException(e);
|
}
|
rushState();
|
}
|
|
/**
|
* socket连接失败
|
* @param socketAddress
|
* @param isNeedReconnect 是否需要重连
|
*/
|
@Override
|
public void onSocketConnFail(SocketAddress socketAddress, boolean isNeedReconnect) {
|
MyApplication.myApplication.isConncet = false;
|
rushState();
|
Log.i("SocketActionListener", "socket连接失败");
|
if (isTest) {
|
// ToastUtil.show(mContext, "连接失败,请检查网络");
|
} else {
|
if (myCallBack != null) {
|
myCallBack.onSocketError(-1, "连接数据中心失败,请检查网络");
|
}
|
}
|
}
|
|
/**
|
* socket断开连接
|
* @param socketAddress
|
* @param isNeedReconnect 是否需要重连
|
*/
|
@Override
|
public void onSocketDisconnect(SocketAddress socketAddress, boolean isNeedReconnect) {
|
Log.i("SocketActionListener", "---> socket断开连接,是否需要重连:" + isNeedReconnect);
|
MyApplication.myApplication.isConncet = false;
|
rushState();
|
}
|
|
|
|
/**
|
* socket接收的数据
|
* @param socketAddress
|
* @param originReadData
|
*/
|
@Override
|
public void onSocketResponse(SocketAddress socketAddress, OriginReadData originReadData) {
|
super.onSocketResponse(socketAddress, originReadData);
|
Log.i("SocketActionListener", "SocketActionListener收到数据-->" + HexUtil.bytesToHex(originReadData.getBodyBytes()));
|
SocketData socketData = new SocketData();
|
socketData.setBodyData(originReadData.getBodyBytes());
|
socketData.setHeaderData(originReadData.getHeaderData());
|
// dataMessage = null;
|
if (myCallBack != null) {
|
myCallBack.onSocketResponse(socketData);
|
}
|
|
}
|
};
|
|
private void rushState() {
|
try {
|
if (HomeActivity.homeActivity != null) {
|
HomeActivity.homeActivity.rushState();
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
|
}
|