socket client server简易封装
https://github.com/vilyever/AndroidSocketClient
由于服务端返回数据格式没有固定长度和包尾,走了不少弯路
最后使用了1.4.1版本
https://github.com/vilyever/AndroidSocketClient/releases/tag/1.4.1
以下示例为服务端返回wifi列表示例:
public class LotteryClient {
private final String HeartBeat = "keepAlive";
/* Properties */
private SocketClient localSocketClient;
public static List wifiList = new ArrayList();
public SocketClient initClient() {
if (localSocketClient == null) {
localSocketClient = new SocketClient(BuildConfig.RemoteIP, BuildConfig.RemotePort);
localSocketClient.setCharsetName(CharsetNames.UTF_8);
localSocketClient.setConnectionTimeout(15 * 1000); // 连接超时时长,单位毫秒
localSocketClient.setHeartBeatMessage(HeartBeat);
localSocketClient.setHeartBeatInterval(3 * 1000);
localSocketClient.disableRemoteNoReplyAliveTimeout();//禁用自动断开
localSocketClient.registerSocketDelegate(new SocketClient.SocketDelegate() {
@Override
public void onConnected(SocketClient client) {
Logger.e("localSocketClient onConnected");
// getLocalSocketClient().send("再见");
if (wifiList != null) wifiList.clear();
}
@Override
public void onDisconnected(SocketClient client) {
Logger.e("localSocketClient onDisconnected");
// 连接断开后 自动重连
new Handler().postDelayed(() -> client.connect(), 3000);
}
@Override
public void onResponse(SocketClient client, SocketResponsePacket responsePacket) {
Logger.e("localSocketClient onResponse " + responsePacket.getMessage());
String message = responsePacket.getMessage();
// +CWLAP:("DIRECT-dd-HP M427 LaserJet")
if (!TextUtils.isEmpty(message)) {
Logger.i("onResponse2 " + message);
if (message.contains("+CWLAP:(\"") && message.contains("\")")) {
message = message.replace("+CWLAP:(\"", "").replace("\")", "");
wifiList.add(message);
}
}
}
});
localSocketClient.registerSocketHeartBeatDelegate(new SocketClient.SocketHeartBeatDelegate() {
@Override
public void onHeartBeat(SocketClient socketClient) {
Logger.e("localSocketClient onHeartBeat");
}
});
localSocketClient.registerSocketPollingDelegate(new SocketClient.SocketPollingDelegate() {
@Override
public void onPollingQuery(SocketClient socketClient, SocketResponsePacket pollingQueryPacket) {
Logger.e("localSocketClient onPollingQuery " + pollingQueryPacket.getMessage());
}
@Override
public void onPollingResponse(SocketClient socketClient, SocketResponsePacket pollingResponsePacket) {
Logger.e("localSocketClient onPollingResponse " + pollingResponsePacket.getMessage());
}
});
}
return localSocketClient;
}
}