关于向安卓客户端推送消息

向手机推送消息是一个比较常用的功能,向IOS推送消息的时候,消息都是要先推送到苹果的通知服务(APNS)上,再由苹果推送到客户端

在安卓中没有类似APNS这样的服务,如果我们自己开发了手机APP,推送的功能就需要我们自己来实现,一般情况下,客户端会建立一个长连接连到服务器端,然后服务器端有消息的话会立即通知到客户端,为了节省服务器资源和同时支持许多客户端连接,服务器端会将连接进行共享,不会给每个连接到服务器端的客户端都建立一个连接.

使用netty来自己实现一个异步的通信框架或者使用servlet容器提供的异步的方案都是可以行的,在我们的项目中使用了jetty-continuations(这是jetty的一个子模块,不仅仅可以在jetty中使用,jetty7之后的版本可以在任何支持servlet3.0的servlet容器中运行),它和异步的servlet类似,但是简化了异步servlet的编程模型,使我们可以更快速地把这个东西使用起来

continuations有几个要点:

服务器端和客户端建立长连接

将请求信息和continuation进行绑定(例如:张三的客户端请求消息,从请求中获取的continuation和张三绑定,然后把这些绑定信息存储起来,服务器再向张三推送消息的时候能够找到这个continuation,然后重用)

没有消息要发送的时候,执行continuation的suspend()方法,将请求挂起

当需要发送新的消息的时候,执行continuation的resume()方法重新激活请求

具体的例子可以参考我的github:https://github.com/jiaoyiping/websample.git

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,969评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,959评论 6 342
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,370评论 11 349
  • 一 方令孺丢下手中的笔,走向阳台。窗外,寥廓的夜空像一片凝固的汪洋,墨蓝色的神秘和旷远,让他想起了父亲临终时的眼神...
    雨童先生阅读 449评论 0 2
  • EOS刚刚结束了第一轮ICO,今天开始长达300多天的众筹。我想说说我自己对这次EOS ICO方式的理解。这次IC...
    Wilbur_阅读 1,083评论 2 11