最近用socket写了一个消息推送的demo,在这里和大家分享一下。

主要实现了:一台手机向另外一台手机发送消息,这两台手机可以随时自由发送文本消息进行通信,类似我们常用的QQ。

效果图:

  


原理:手机通过socket发送消息到服务器,服务器每接收到一条消息之后,都会把这条消息放进一个messageList里面,服务器会不停地检测messageList是否含有消息,如果有的话就会根据messageList里面item的数据,推送到相应的另一端手机上面。


下面简单画了一个图来说明这个原理:

演示:手机客户端client1发送消息msg1到手机客户端client2,client2收到消息后回复msg2给client1



1.手机客户端client1发送一条“msg1”的文本消息到服务器;

2.服务器收到来自client1的“msg1”消息后,把它add进messageList里面;

3.服务器检测到messageList里面含有消息(开启服务器时就新建里一个检测messageList的线程,线程里面有一个死循环,用于不停检测messageList是否含有消息)

4.服务器读取消息数据,如读取到来自client1发给client2的消息“msg1”,那么服务器就把“msg1”推送到client2上;

5.client2检测到服务器推送的消息,做出相应的操作(如:震动、铃声、显示消息等)

6.client2接收到来自服务器推送的“msg1”消息后,client2也回复一条文本消息“msg2”给client1,此过程和client1发送消息给client2一样。

7.最后,client2就可以显示来自client1发送的消息“msg1”,而client1则可以显示来自client2的回复消息“msg2”


以上主要介绍了实现消息推送的原理,实现过程的代码见下一篇:Android socket 编程 实现消息推送(二)


更多相关文章

  1. 万字长文带你了解最常用的开源 Squid 代理服务器
  2. Nginx系列教程(一)| 手把手教你在Linux环境下搭建Nginx服务
  3. Nginx系列教程(三)| 一文带你读懂Nginx的负载均衡
  4. Android的消息机制之ThreadLocal的工作原理
  5. Android(安卓)模拟器创建参数说明
  6. Android智能手机被用于僵尸网络?智能移动平台安全问题日渐突显
  7. Android捕获全局异常信息并实现上传
  8. Android(安卓)studio 不用数据线调试真机
  9. 关于在Mac上使用真机进行Android程序调试的问题总结

随机推荐

  1. Android(安卓)Studio使用小技巧:自定义Log
  2. Android(安卓)中对 aar 文件的使用攻略
  3. Android(安卓)UI 的单位和概念
  4. Android(安卓)Studio安装教程
  5. Android获取手机相册图片
  6. Android(安卓)Fragment 没有onRestoreIns
  7. AlarmManager.setRepeating不准确的问题,
  8. Android开发--WebView, WebChromeClient
  9. Androidの疑难杂症之加载布局报Error inf
  10. Android(安卓)7.0 Audio: 按键调节音量的