Java web 服务端消息推送用什么比较好
Java web 服务端消息推送用极光推送就不错,效率很高。极光推送搭建起一个高度稳定、可扩展的云端架构,极大地帮助移动应用开发者节约开发和维护的成本,轻松实现毫秒级的精准推送。
极光推送服务是一款免费的第三方推送消息的平台。极光推送从整体来说还不错,具有以下优势:
1、开放注册,免费向所有的开发者开放使用。
2、JPush 是经过考验的大规模 App 推送平台,每天推送消息量级为数百亿条。 开发者集成 SDK 后,可以通过调用 API 推送消息。同时,JPush 提供可视化的 web 端控制台发送通知,统计分析推送效果。
3、开发者可以轻松地通过极光发送各个移动平台的系统通知,还可以在控制台编辑多种富文本展示模板; 极光还提供自定义消息的透传,客户端接到消息内容后根据自己的逻辑自由处理。
4、724小时专人专线服务:专属安全团队支持,24 小时随时响应,免除后顾之忧。
所以从以上来看,极光是一个不错的选择,深圳市和讯华谷信息技术有限公司(极光 Aurora Mobile,纳斯达克股票代码:JG)成立于2011年,是中国领先的开发者服务提供商,专注于为开发者提供稳定高效的消息推送、一键认证以及流量变现等服务,助力开发者的运营、增长与变现。
目前要实现消息实时推送,有两种方法,一种是ajax轮询,由客户端不停地请求服务器端,查询有没有新消息,然后再由服务器返回结果;另外一种就是long poll,通过一次请求,询问服务器有没有新消息更新,如果没有新消息时,会保持长连接,就一直不返回Response给客户端。直到有消息才返回,返回完之后,客户端再次建立连接,周而复始。这两种都是单向链接,需要被动的请求服务器,而不是由服务器自动发给客户端。
从上面可以看出其实这两种方式,都是在不断地建立HTTP连接,然后等待服务端处理,可以体现HTTP协议的另外一个特点,被动性。
java socket客户端向服务器端发送消息,可以使用socket类,实例如下:mport java;public class EchoClient { public static void main(String args[]) { try { Socket connection =new Socket("127001", 5050); BufferedReader input = new BufferedReader(new InputStreamReader( connectiongetInputStream())); PrintWriter out = new PrintWriter(connectiongetOutputStream(),true ); String info; info = inputreadLine(); Systemoutprintln(info); boolean done = false; BufferedReader in = new BufferedReader(new InputStreamReader(Systemin)); String sInput; //outprintln("BYE"); while (!done) { info = inputreadLine(); Systemoutprintln(info); } connectionclose(); } catch (SecurityException e) { Systemoutprintln("SecurityException when connecting Server!"); } catch (IOException e) { Systemoutprintln("IOException when connecting Server!"); } }}
所谓的消息推送就是从服务器端向移动终端发送连接,传输一定的信息。比如一些新闻客户端,每隔一段时间收到一条或者多条通知,这就是从服务器端传来的推送消息;还比如常用的一些IM软件如微信、GTalk等,都具有服务器推送功能。
推送方法如下:
1)通过SMS进行服务器端和客户端的交流通信。
在Android平台上,你可以通过拦截SMS消息并且解析消息内容来了解服务器的意图,可以实现完全的实时操作。但是问题是这个方案的成本相对比较高,且依赖于运营商。
2)循环主动定时获取
这种方法需要客户端来做一个定时或者周期性的访问服务器端接口,以获得最新的消息。轮询的频率太慢可能导致某些消息的延迟,太快则会大量消耗网络带宽和电池。
3)持久连接
这个方案可以解决由轮询带来的性能问题,但是还是会消耗手机的电池。我们需要开一个服务来保持和服务器端的持久连接(苹果就和谷歌的C2DM是这种机制)。但是对于Android系统,当系统可用资源较低,系统会强制关闭我们的服务或者是应用,这种情况下连接会强制中断。(Apple的推送服务之所以工作的很好,是因为每一台手机仅仅保持一个与服务器之间的连接,事实上C2DM也是这么工作的。即所有的推送服务都是经由一个代理服务器完成的,这种情况下只需要和一台服务器保持持久连接即可。C2DM=Cloud to Device Messaging)。
0条评论