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); } } }; }