2018 android 使用Mina框架 长连接

公司最近做的自助售货机的项目,为提高出货效率,需要用到长连接。
大家可以先看一下android长连接心跳机制

实现长连接的三种方式,以及他们的优缺点。

  • 使用第三方的长连接服务;
  • 通过NIO等方案实现长连接服务;
  • 通过MINA等第三方框架实现长连接;
  1. 使用第三方的长连接服务
    介绍:这是最简单的方式,我们可以通过接入极光推送,百度推送,友盟等第三方服务实现长连接,通过接入第三方的API我们可以很方便的接入第三方的长连接,推送服务,但是这种方式定制化程度不太好,如果对长连接服务不是要求特别高,对定制化要求不是很高的话基本可以考虑这种方式(目前主流的App都是使用第三方的长连接服务)
    优势:简单,方便
    劣势:定制化程度不高

  2. 使用NIO等方案实现长连接服务
    介绍:通过NIO的方式实现长连接,这种方式对技术要求程度比较高,基本都是通过java API实现长连接,实现心跳包,实现异常情况的容错等操作,可以说通过NIO实现长连接对技术要求很高,一般如果没有成行的技术方案比建议这么做,就算实现了长连接,后期连接的维护,对电量,流量的损耗等都需要持续的优化。
    优势:定制化比较高
    劣势:技术要求高,需要持续的维护

  3. 使用MINA等第三方框架实现长连接
    介绍:MINA是一个第三方的NIO框架,该框架实现了一整套的长连接机制,包括长连接的建立,心跳包的实现,异常机制的容错等。使用MINA实现长连接可以定制化的实现一些特有的功能,并且比NIO方案较为简单,因为其已经封装了一些长连接的特有机制,比如心跳包,容错等。
    优势:可定制,较NIO方法简单
    劣势:也需要一定的技术储备

接下来就是实践:

添加依赖

 //  基于Mina封装的Socket长连接库
    implementation('com.github.Jeromeer:MinaSocket:1.0') {
        exclude group: 'com.android.support'
    }

初始化

	private static final String HOST = "192.168.0.54";
    private static final int PORT = 8080;

    private void initMinaSocket() {
        //  初始化长连接

        SocketConfig socketConfig = new SocketConfig.Builder(getApplicationContext())
                .setIp(HOST)//ip
                .setPort(PORT)//端口
                .setReadBufferSize(10240)//readBuffer
                .setIdleTimeOut(30)//客户端空闲时间,客户端在超过此时间内不向服务器发送数据,则视为idle状态,则进入心跳状态
                .setTimeOutCheckInterval(10)//客户端连接超时时间,超过此时间则视为连接超时
                .setRequestInterval(10)//请求超时间隔时间
                .setHeartbeatRequest("发送" + "\n")//与服务端约定的发送过去的心跳包
                .setHeartbeatResponse("接受" + "\n") //与服务端约定的接收到的心跳包
                .builder();
        ContentServiceHelper.bindService(this, socketConfig);
        SessionManager.getInstance().setReceivedResponseListener(this);

    }

实现监听

public class MainActivity extends AppCompatActivity implements View.OnClickListener, SocketResponseListener {

开始调用

 ContentServiceHelper.sendClientMsg(mMJsonString + "\n");

借鉴查阅资料(https://blog.csdn.net/qq_23547831/article/details/51690047)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值