package com.dayu.recharge.net;
|
|
import android.content.Context;
|
import android.os.Handler;
|
import android.text.TextUtils;
|
import android.util.Log;
|
|
import com.dayu.recharge.dao.BaseDaoSingleton;
|
import com.dayu.recharge.dbBean.AdminDataBean;
|
import com.dayu.recharge.dbBean.IpBean;
|
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.recharge.MyApplication;
|
import com.dayu.recharge.utils.ToastUtil;
|
import com.dayu.recharge.utils.WSHelper;
|
import com.easysocket.utils.LogUtil;
|
|
|
/**
|
* 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().getDefOptions().getSocketAddress() != null) {
|
EasySocket.getInstance().disconnect(false);
|
EasySocket.getInstance().connect();
|
this.dataMessage = dataMessage;
|
} else {
|
LogUtil.w("Socket地址为空");
|
}
|
}
|
|
|
/**
|
* 测试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("SocketActionListener", "连接成功");
|
String initCode = WSHelper.getInstance(MyApplication.myApplication).get("initCode", "");
|
if (TextUtils.isEmpty(initCode) && !MyApplication.myApplication.isDoInitMachine) {
|
new Handler().postDelayed(new Runnable() {
|
@Override
|
public void run() {
|
IpBean ipBean = BaseDaoSingleton.getInstance(MyApplication.myApplication).ipDao().findFirst();
|
AdminDataBean adminData = BaseDaoSingleton.getInstance(MyApplication.myApplication).adminDao().findFirst();
|
if (ipBean != null && adminData != null) {
|
MyApplication.myApplication.initMachineRequestBean(ipBean.getIp(), ipBean.getPort(), adminData.getAddressCode());
|
}
|
}
|
}, 2000);
|
|
}
|
if (dataMessage != null) {
|
EasySocket.getInstance().upMessage(dataMessage);
|
}
|
if (isTest) {
|
MyApplication.myApplication.isConncet = true;
|
EasySocket.getInstance().disconnect(false);
|
} else {
|
|
}
|
|
}
|
|
/**
|
* socket连接失败
|
* @param socketAddress
|
* @param isNeedReconnect 是否需要重连
|
*/
|
@Override
|
public void onSocketConnFail(SocketAddress socketAddress, boolean isNeedReconnect) {
|
// isConnected = false;
|
Log.i("SocketActionListener", "socket连接失败");
|
if (isTest) {
|
ToastUtil.show(mContext, "连接失败,请检查网络");
|
} else {
|
if (myCallBack != null) {
|
myCallBack.onSocketError(-1, "socket连接失败,请检查网络");
|
}
|
}
|
}
|
|
/**
|
* socket断开连接
|
* @param socketAddress
|
* @param isNeedReconnect 是否需要重连
|
*/
|
@Override
|
public void onSocketDisconnect(SocketAddress socketAddress, boolean isNeedReconnect) {
|
Log.i("SocketActionListener", "---> socket断开连接,是否需要重连:" + isNeedReconnect);
|
|
}
|
|
/**
|
* socket接收的数据
|
* @param socketAddress
|
* @param readData
|
*/
|
@Override
|
public void onSocketResponse(SocketAddress socketAddress, String readData) {
|
Log.i("SocketActionListener", "SocketActionListener收到数据-->" + readData);
|
|
}
|
|
@Override
|
public void onSocketResponse(SocketAddress socketAddress, OriginReadData originReadData) {
|
super.onSocketResponse(socketAddress, originReadData);
|
Log.i("SocketActionListener", "SocketActionListener收到数据-->" + originReadData.getBodyString());
|
SocketData socketData = new SocketData();
|
socketData.setBodyData(originReadData.getBodyBytes());
|
socketData.setHeaderData(originReadData.getHeaderData());
|
dataMessage = null;
|
if (myCallBack!=null){
|
myCallBack.onSocketResponse(socketData);
|
}
|
|
}
|
};
|
|
}
|