其实我们要用推送服务的情况还挺多:
1,站内性 其实是可以用推送实现的,互相点对点的推送 当然这是在web上的,名字有点老土
2,私信 这个微博的私信就是一种,值在页面右下角出来对话框形式的
3,优惠发送到手机app上 很多app都来这个,推送些软件或者文章
4,app和app之间的通信 聊天软件 微信 gtalk等
以上几种服务的形式可分类成:
1,server对server 站内信
2,server对client 私信 优惠推送
3,client对client 聊天工具 微信 gtalk
其本质的原型是 N个client《------》server《-------》N个client client在登录后都会有一个id被记录在server,server就通过这个id来点对点的发送信息返回信息。这里只是说了点对点就是私聊,群聊还没说,我猜想只是多了一个群聊标记判断。
其原理实现是基于xmpp协议的 http://blog.csdn.net/xyz_lmn/article/details/6947130 谢谢这个作者
可能的技术选型和架构:
1,
服务端server:openfire+smack+mysql+tomcat
openfire是实现了xmpp的一个服务器也是一个开源项目,用来管理连入的client信息的。也是有openfire负责消息发送和接受的。
smack是一个xmpp协议的api库,openfire是使用了这个库的
mysql是openfire的数据库,也可以支持mssql的
tomcat是web服务器,openfire还是要跑在这个上面的
客户端client:使用smack api的任何客户端都可以,只要信息以xmpp协议发送就可以了,至于发送到哪里肯定是openfire在的服务器咯
上面这个选型呢,开源的,可以自己修改,如果要和自己的程序在进行整合需要花点时间
2,
服务端server:openfire+smack+mysql+tomcat
客户端client:smackweb html5或者用浏览器控件直接访问用web技术做的网站也行。只要让client链接到server就可以了
还有使用asmack api 的client asmack是smack的android优化版
3,
服务端server:你自己随便用什么写都行
客户端client:随便什么客户端+现有的第三方推送服务,极光推送,还有一个收费的我就不举例了。
顺便说一句:如果你的应用的流程是可以在client执行一个动作后获取服务端信息的,就还是用http吧。也就是推送的业务和其他业务是相邻的2个业务动作就行。