三、实现个性化的推送

上面说了很多原理,也给出了简单的代码实现,但是在实际生产过程中,肯定不能用上面的代码,针对自己系统的应用场景选择合适的推送方案才是合理的,因此最后简单说一下实现个性化推送的两种方式。第一种很简单,直接使用第三方实现的推送,无需复杂的开发运维,直接可以使用。第二种就是自己封装,可以选择如今较为火热的WebSocket来实现系统的推送。

第三方

在这里推荐一个第三方推送平台,GoEasy

推荐理由是GoEasy的理念符合我们的选择:3

1)更简单的方式将消息从服务器端推送至客户端

2)更简单的方式将消息从各种客户端推送至客户端

GoEasy具体的使用方式这里不再赘述,详见官网。对于后端后端开发者,可直接使用Rest方式调用推送,对于前段或web开发者,可以从web客户端用javascript脚本进行调用推送。

封装自己的推送服务

如果是一个老系统进行扩展,那么更推荐使用Server-sent,服务端改动量不会很大。如果是新系统,更推荐websocket,实现的功能功能更全面。

我们以websocket为例,不再贴出具体的代码实现。

我们如果需要使用websocket技术实现自己的推送服务,需要注意哪些点,或者说需要踩哪些坑呢,本文最后列出几点供大家参考。

长连接的心跳处理;

WebSocket中获取HttpSession进行用户相关操作;

服务端调优实现高并发量client同时在线;

服务端维持多用户的状态;

群发消息;

等等等….

最后贴出上述代码的git库地址,所有demo均可运行。环境为jdk1.8+tomcat8

https://github.com/codingxxm/PushDemo


引用:

1https://www.cnblogs.com/zhaozhan/archive/2010/09/08/1821834.html

2https://www.ibm.com/developerworks/cn/web/wa-lo-comet/

3http://www.goeasy.io/cn/started


推荐阅读

RESTful API教程:学习关键的Web服务设计原则

React-native如何变为移动端的弄潮儿

使用消息系统进行微服务间通讯时,如何保证数据一致性


关于作者:宝石徐,普元信息开发工程师,毕业于辽宁科技大学,专注于使用移动开发平台开发app,负责中国邮政集团移动平台项目邮我行app开发和后台开发运维工作。