fdf_wind
fdf_wind
2015-02-03 07:43
采纳率: 33.3%
浏览 11.7k

android利用mina框架保持长连接通信

最近在学做一个手机客户端,服务端用java mina搭建,客户端也是利用mina 和服务端保持长连接通信。
自己的思路:1打开应用即和服务端建立连接,将session保存
2在不同的activity中用保存的session去请求相关数据
3在mina客户端的接收方法中将服务端得到的服务端响应结果广播出去,在对应的activity中接收该广播
以上思路不知道是否可行或者有什么考虑不全的地方还请各位指正一下,谢谢

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • a63850553
    a63850553 2015-02-05 07:56
    已采纳

    做过类似的功能,正准备整合成框架发布到Github一直没时间。
    思路对的,推荐建立连接的方法放在service中,然后如何和服务端保持连接是个很重要的问题,因为移动端是会进入休眠状态的,需要定时唤醒重连,
    唤醒重连的目的在于请求服务端消息栈获取这段时间内发送过来的消息,所以所谓的长连接其实也并不是真正意义的长连接,是在唤醒状态下的长连接
    和休眠状态下的轮询的结合。如果不是为了推送功能,可以考虑不用长连接,直接短连接传输完毕就关闭。

    点赞 评论
  • fdf_wind
    fdf_wind 2015-02-06 02:55

    谢谢您的解答,确实是为了推送才选择的长连接。在保持长连接方面,准备采用服务端通过发送心跳包和客户端保持长连接,
    不知道这种方式能不能达到真正意义上的长连接。

    点赞 评论
  • a63850553
    a63850553 2015-02-06 06:38

    当然,如果你对推送的实时性要求不是特别高,也是可以不做休眠状态下的定时轮询的,在每次系统从休眠状态唤醒时进行重连,这个时候去服务端消息栈中读取再这期间推送的消息,实现一种唤醒状态下实时,休眠状态下非实时的推送服务,这也是目前很多应用使用的方式,平时经常会看到手机一解锁就弹出一堆推送信息吧?高级点的就是我说的那种,在休眠状态下通过AlarmService去做轮询,轮询遵守一些时间策略,QQ、微信之类的就是这么做的。

    点赞 评论

相关推荐