android通过xmpp实现服务器到客户端的推送功能
2014-11-16 18:59
671 查看
最近项目中要做推送功能,除了自己知道的友盟推送外还不知道其它的实现方式,于是就上网百度了一下要实现推送的基本途径,发现主要还有以下几种方式。
1.客户端创建一个socket,与服务器端的serversocket连接,其实就是客户端与服务器一直保持连接,这个其实本质上不能算是推送,只是利用了长连接这一技术实现了揈 送的功能,需要在后台一直启动一个服务与服务器保持连接才可以,还要处理许多意外的情况,如:服务被强制关掉,无法在手机关机的情况下推送等等。总之要处理的情况比较多,不太容易全部处理好。
2.Google的C2DM,具体不细说,缺点,服务器在国外,你懂得,不是很稳定。有兴趣的可以自己去百度学习。
3.XMPP协议,它是一种基于 XML的传递协议,具有很强的灵活性和可扩展性,它的特点是将工作的复杂性从客户端移到了服务器端。QQ等软件用的也都是基于XMPP协议的推送。
下面就说一下,如何搭建好XMPP服务器和客户端,并实现推送的功能。
1.服务器的搭建:xmpp项目组开源了一个小型的服务器,一般情况下这个小型的服务器已经可以满足我们的需求了。稍后我们把整个demo工程(服务器和客户端)上传到我的资源里,有需要的可以下载,只要将客户端和服务器运行起来,就可以实现推送功能了。步骤:1)下载好服务器源码后,解压,进入整个服务器项目的bin目录下,点击run.bat,将服务器程序启动起来。2)等服务器程序完全跑起来后,在浏览器中输入127.0.0.1:7070,进入服务器控制页面,页面截图如下:
![](http://img.blog.csdn.net/20141116192053984?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGNxNTIxMTMxNDEyMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
看到此图,表明服务器正常启动,下面说一下几个选项卡的用途,home卡就是一个欢迎页面,表示服务器正常启动,Users卡记录了所有与该服务器连接成功过的客户端,以一个列表的形式列出,Sessions列出所有当前在线的客户端,Notifications卡则是我们主动发送推送的地方。
2.创建客户端:下载好xmpp客户程序,导入eclipse后运行时,总是报ClassNotFound,于是自己仿照这的客户端做了一个,可以正常的运行起来,客户端一运行起来后就与推送服务器连接成功,连接成功可以看到服务器上此用户的状态,如图,则表示连接成功:
![](http://img.blog.csdn.net/20141116192754109?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGNxNTIxMTMxNDEyMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
3.连接成功后,我们就可以向我们的客户端发送推送消息了,发送成功截图:
![](http://img.blog.csdn.net/20141116193516753?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGNxNTIxMTMxNDEyMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
利用xmpp可以很轻易的搭建一个推送服务器与客户端出来,下面将我的整个工程传上来,大家可以下载去试。要想成功连接到服务器,需要将res/raw/androidpc.property文件中的xmhost改为你要请求的服务器地址才可连接成功。
1.客户端创建一个socket,与服务器端的serversocket连接,其实就是客户端与服务器一直保持连接,这个其实本质上不能算是推送,只是利用了长连接这一技术实现了揈 送的功能,需要在后台一直启动一个服务与服务器保持连接才可以,还要处理许多意外的情况,如:服务被强制关掉,无法在手机关机的情况下推送等等。总之要处理的情况比较多,不太容易全部处理好。
2.Google的C2DM,具体不细说,缺点,服务器在国外,你懂得,不是很稳定。有兴趣的可以自己去百度学习。
3.XMPP协议,它是一种基于 XML的传递协议,具有很强的灵活性和可扩展性,它的特点是将工作的复杂性从客户端移到了服务器端。QQ等软件用的也都是基于XMPP协议的推送。
下面就说一下,如何搭建好XMPP服务器和客户端,并实现推送的功能。
1.服务器的搭建:xmpp项目组开源了一个小型的服务器,一般情况下这个小型的服务器已经可以满足我们的需求了。稍后我们把整个demo工程(服务器和客户端)上传到我的资源里,有需要的可以下载,只要将客户端和服务器运行起来,就可以实现推送功能了。步骤:1)下载好服务器源码后,解压,进入整个服务器项目的bin目录下,点击run.bat,将服务器程序启动起来。2)等服务器程序完全跑起来后,在浏览器中输入127.0.0.1:7070,进入服务器控制页面,页面截图如下:
看到此图,表明服务器正常启动,下面说一下几个选项卡的用途,home卡就是一个欢迎页面,表示服务器正常启动,Users卡记录了所有与该服务器连接成功过的客户端,以一个列表的形式列出,Sessions列出所有当前在线的客户端,Notifications卡则是我们主动发送推送的地方。
2.创建客户端:下载好xmpp客户程序,导入eclipse后运行时,总是报ClassNotFound,于是自己仿照这的客户端做了一个,可以正常的运行起来,客户端一运行起来后就与推送服务器连接成功,连接成功可以看到服务器上此用户的状态,如图,则表示连接成功:
3.连接成功后,我们就可以向我们的客户端发送推送消息了,发送成功截图:
利用xmpp可以很轻易的搭建一个推送服务器与客户端出来,下面将我的整个工程传上来,大家可以下载去试。要想成功连接到服务器,需要将res/raw/androidpc.property文件中的xmhost改为你要请求的服务器地址才可连接成功。
相关文章推荐
- android客户端通过Get方式提交参数给服务器,使用URL和HttpURLConnection实现,以及乱码问题解决
- Android 通过 XMPP 实现聊天功能,App Engine Assisted Group Chat (开源)
- android客户端消息推送功能实现方案
- Android BLE与终端通信(四)——实现服务器与客户端即时通讯功能
- 实现android注册登陆功能的客户端服务器源码与解析
- 基于XMPP实现android客户端与服务器的交互
- Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送
- Android 通过 XMPP 实现聊天功能,App Engine Assisted Group Chat (开源)
- Android中通过socket建立长连接实现推送功能
- Android通过Http连接MySQL 实现登陆/注册(数据库+服务器+客户端)
- Android客户端与PC服务端之间的SOCKET实现登陆功能(服务器)
- c++服务器与android客户端进行文件传输功能的实现
- Android BLE与终端通信(四)——实现服务器与客户端即时通讯功能
- Android通过Http连接MySQL 实现登陆/注册(数据库+服务器+客户端)
- Android通过PHP服务器实现登录功能
- Android客户端读取PHP服务器的图片等信息,并用ListView列出来,实现缓存功能。
- Android使用Gson解析JSON连接服务器实现客户端登陆功能
- 实现android注册登陆功能的客户端服务器源码与解析socket
- Android BLE与终端通信(四)——实现服务器与客户端即时通讯功能
- Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送