1.服务端springboot升级2.1.4,protobuf升级3.7.0

2.android sdk升级,适配android8.0+,修复一些之前的兼容性问题

2.消息的id字段名由mid修改为id,类型由String修改为long;
This commit is contained in:
远方夕阳 2019-04-18 19:25:27 +08:00
parent ffc6f89527
commit f5efbe075d
9 changed files with 22 additions and 15 deletions

View File

@ -26,7 +26,7 @@ import java.util.Map;
import java.util.Random; import java.util.Random;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore; import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.mina.core.future.ConnectFuture; import org.apache.mina.core.future.ConnectFuture;
import org.apache.mina.core.future.IoFutureListener; import org.apache.mina.core.future.IoFutureListener;
@ -76,7 +76,9 @@ class CIMConnectorManager extends IoHandlerAdapter implements KeepAliveMessageFa
private ExecutorService executor = Executors.newFixedThreadPool(1); private ExecutorService executor = Executors.newFixedThreadPool(1);
private Semaphore semaphore = new Semaphore(1,true);
private final AtomicBoolean CONNECTING_FLAG = new AtomicBoolean(false) ;
private CIMConnectorManager(Context ctx) { private CIMConnectorManager(Context ctx) {
context = ctx; context = ctx;
makeNioConnector(); makeNioConnector();
@ -127,11 +129,14 @@ class CIMConnectorManager extends IoHandlerAdapter implements KeepAliveMessageFa
return; return;
} }
if (isConnected() || !semaphore.tryAcquire()) { if (CONNECTING_FLAG.get() || isConnected()) {
return; return;
} }
CONNECTING_FLAG.set(true);
if(connector == null || connector.isDisposed()) { if(connector == null || connector.isDisposed()) {
makeNioConnector(); makeNioConnector();
} }
@ -149,7 +154,7 @@ class CIMConnectorManager extends IoHandlerAdapter implements KeepAliveMessageFa
connector.connect(remoteAddress).addListener(new IoFutureListener<ConnectFuture>() { connector.connect(remoteAddress).addListener(new IoFutureListener<ConnectFuture>() {
@Override @Override
public void operationComplete(ConnectFuture future) { public void operationComplete(ConnectFuture future) {
semaphore.release(); CONNECTING_FLAG.set(false);
future.removeListener(this); future.removeListener(this);
if(future.getException() != null) { if(future.getException() != null) {
handleConnectFailure(future.getException(),remoteAddress); handleConnectFailure(future.getException(),remoteAddress);
@ -267,7 +272,7 @@ class CIMConnectorManager extends IoHandlerAdapter implements KeepAliveMessageFa
intent.setPackage(context.getPackageName()); intent.setPackage(context.getPackageName());
intent.setAction(CIMConstant.IntentAction.ACTION_CONNECTION_CLOSED); intent.setAction(CIMConstant.IntentAction.ACTION_CONNECTION_CLOSED);
context.sendBroadcast(intent); context.sendBroadcast(intent);
} }
@Override @Override

View File

@ -96,7 +96,7 @@ public interface CIMConstant {
String ACTION_REPLY_RECEIVED = "com.farsunset.cim.REPLY_RECEIVED"; String ACTION_REPLY_RECEIVED = "com.farsunset.cim.REPLY_RECEIVED";
// 网络变化广播 // 网络变化广播
String ACTION_NETWORK_CHANGED = "com.farsunset.cim.NETWORK_CHANAGED"; String ACTION_NETWORK_CHANGED = "com.farsunset.cim.NETWORK_CHANGED";
// 重试连接 // 重试连接
String ACTION_CONNECTION_RECOVERY = "com.farsunset.cim.CONNECTION_RECOVERY"; String ACTION_CONNECTION_RECOVERY = "com.farsunset.cim.CONNECTION_RECOVERY";

View File

@ -62,7 +62,7 @@
<receiver android:name="com.farsunset.ichat.example.receiver.CIMPushManagerReceiver"> <receiver android:name="com.farsunset.ichat.example.receiver.CIMPushManagerReceiver">
<intent-filter android:priority="0x7fffffff"> <intent-filter android:priority="0x7fffffff">
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> <!-- 网络变化广播 targetVersion 24之前 --> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> <!-- 网络变化广播 targetVersion 24之前 -->
<action android:name="com.farsunset.cim.NETWORK_CHANAGED" /> <!-- 网络变化广播 targetVersion 24之后--> <action android:name="com.farsunset.cim.NETWORK_CHANGED" /> <!-- 网络变化广播 targetVersion 24之后-->
<action android:name="com.farsunset.cim.MESSAGE_RECEIVED" /><!-- 消息广播action --> <action android:name="com.farsunset.cim.MESSAGE_RECEIVED" /><!-- 消息广播action -->
<action android:name="com.farsunset.cim.SENT_FAILED" /> <!-- 发送sendbody失败广播--> <action android:name="com.farsunset.cim.SENT_FAILED" /> <!-- 发送sendbody失败广播-->
<action android:name="com.farsunset.cim.SENT_SUCCESSED" /> <!-- 发送sendbody成功广播 --> <action android:name="com.farsunset.cim.SENT_SUCCESSED" /> <!-- 发送sendbody成功广播 -->

View File

@ -25,7 +25,7 @@ import java.net.InetSocketAddress;
import java.util.Random; import java.util.Random;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
import java.util.concurrent.Semaphore; import java.util.concurrent.atomic.AtomicBoolean;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@ -75,7 +75,7 @@ class CIMConnectorManager extends ChannelInboundHandlerAdapter{
private EventLoopGroup loopGroup; private EventLoopGroup loopGroup;
private Channel channel;; private Channel channel;;
private ExecutorService executor = Executors.newFixedThreadPool(1); private ExecutorService executor = Executors.newFixedThreadPool(1);
private Semaphore semaphore = new Semaphore(1,true); private final AtomicBoolean CONNECTING_FLAG = new AtomicBoolean(false) ;
private Context context; private Context context;
@ -143,11 +143,13 @@ class CIMConnectorManager extends ChannelInboundHandlerAdapter{
return; return;
} }
if (isConnected() || !semaphore.tryAcquire()) { if (CONNECTING_FLAG.get() || isConnected()) {
return; return;
} }
CONNECTING_FLAG.set(true);
if (bootstrap == null || loopGroup.isShutdown()) { if (bootstrap == null || loopGroup.isShutdown()) {
makeNioBootstrap(); makeNioBootstrap();
} }
@ -161,7 +163,7 @@ class CIMConnectorManager extends ChannelInboundHandlerAdapter{
@Override @Override
public void operationComplete(ChannelFuture future) { public void operationComplete(ChannelFuture future) {
semaphore.release(); CONNECTING_FLAG.set(false);
future.removeListener(this); future.removeListener(this);
if(!future.isSuccess() && future.cause() != null) { if(!future.isSuccess() && future.cause() != null) {
handleConnectFailure(future.cause(),remoteAddress); handleConnectFailure(future.cause(),remoteAddress);

View File

@ -96,7 +96,7 @@ public interface CIMConstant {
String ACTION_REPLY_RECEIVED = "com.farsunset.cim.REPLY_RECEIVED"; String ACTION_REPLY_RECEIVED = "com.farsunset.cim.REPLY_RECEIVED";
// 网络变化广播 // 网络变化广播
String ACTION_NETWORK_CHANGED = "com.farsunset.cim.NETWORK_CHANAGED"; String ACTION_NETWORK_CHANGED = "com.farsunset.cim.NETWORK_CHANGED";
// 重试连接 // 重试连接

View File

@ -5,7 +5,7 @@
<configuration PROFILE_NAME="Debug" CONFIG_NAME="Debug" /> <configuration PROFILE_NAME="Debug" CONFIG_NAME="Debug" />
</configurations> </configurations>
</component> </component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
<component name="ProjectType"> <component name="ProjectType">

View File

@ -62,7 +62,7 @@
<receiver android:name="com.farsunset.ichat.example.receiver.CIMPushManagerReceiver"> <receiver android:name="com.farsunset.ichat.example.receiver.CIMPushManagerReceiver">
<intent-filter android:priority="0x7fffffff"> <intent-filter android:priority="0x7fffffff">
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> <!-- 网络变化广播 targetVersion 24之前 --> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> <!-- 网络变化广播 targetVersion 24之前 -->
<action android:name="com.farsunset.cim.NETWORK_CHANAGED" /> <!-- 网络变化广播 targetVersion 24之后--> <action android:name="com.farsunset.cim.NETWORK_CHANGED" /> <!-- 网络变化广播 targetVersion 24之后-->
<action android:name="com.farsunset.cim.MESSAGE_RECEIVED" /><!-- 消息广播action --> <action android:name="com.farsunset.cim.MESSAGE_RECEIVED" /><!-- 消息广播action -->
<action android:name="com.farsunset.cim.SENT_FAILED" /> <!-- 发送sendbody失败广播--> <action android:name="com.farsunset.cim.SENT_FAILED" /> <!-- 发送sendbody失败广播-->
<action android:name="com.farsunset.cim.SENT_SUCCESSED" /> <!-- 发送sendbody成功广播 --> <action android:name="com.farsunset.cim.SENT_SUCCESSED" /> <!-- 发送sendbody成功广播 -->