接着前面的工作,消息接收之后,要推送给不同的客户端。关于消息推送,网上有很多方式,http长连接,xmpp协议,还有一个谷歌的貌似叫C2DM的东西。
在此之前,用openfire做了一个小demo,例子是在网上找到的。也可以实现和AndroidPn差不多的一些功能,包括点对点,广播消息,反正都是xmpp协议的。
客户端是安卓的,所以,用androidpn。
这个东西是韩国人写的,官方文档也都是韩文(呵呵)。
(一)运行源码
源码是用myeclipse编译的,在eclipse里面,要处理一下,属性有个project facets,修改一下。也可以新建一个web工程,把原来eclipse里面的东西拷贝过来,不过比较麻烦。本人采用的就是这种麻烦的方式,不管怎么样,这样自己建立的工程,比较干净。
其中,会有几个注意事项,首先是数据源的配置,这个要自己修改为自己的数据库。源码用的是hibernate连接,在配置里面,修改即可。只要数据库连接的没问题,其他一般不会报错。
然后就是跑起来的时候,有些东西会发生404,比如:
这里面的,home,users,sessions这些按钮。
因为源码用的是sitemesh的模板技术,里面的路径的地址应该是按照原myeclipse的,这个问题应该是新建项目引起的,修改一下webroot下面decorators里的default文件,将tabmenu里面的几个连接路径修改一下,去掉前面的/就好了。
(二)源码运行
当推送消息的时候,会调用NotificationManager类中的sendBroadcast或者sendNotifcationToUser方法。
这里用的是广播,里面会发一个字符串作为消息体。
在我们的项目里,就可以调用这个方法,来推送消息了。
百度文库里有一篇介绍,关于使用该源码的两个场景的配置。
http://wenku.baidu.com/link?url=qW7UPz9p3v4VyuNJJc1H7jP4QY4uBKTJtNEBhPJRhakWD_OCN2kXvTLRH0fx7fg7Xd9J-NCX_JlvgjDu-kMnQJCtk_Sgms-6QAGYcqZTFeW
主要是要注意,如果你的项目中也存在spring的话,如果也有数据源,这些bean有可能冲突。