前言
你还在羡慕别人成熟的推送系统么?
你想定制自己的推送系统么?
你有内网推送的需求而不能使用外网推送产品的困扰么?
文章将向你介绍研究分布式推送的过程与心得(本人呕心沥血打造…),希望看完文章的你能有所收获。
- 通过这个标题点进来就默认你对websocket有了基本的了解,如果你不知道,这里有个很好的答案websocket是什么。
- 如果你不想听我bb,完整项目传送门(给个star支持一下…3q _),里面有详细的项目介绍与搭建过程。
- websocket协议只是推送的一种实现,当然可以使用其他协议,希望构建的思路可以启发到你。
技术选型
在搜索了n多次websocket这个关键词以后…我选择用netty这个支持nio的高性能网络框架作为推送支持,它帮我们屏蔽了网络底层复杂通信逻辑,提供简单易用的api。(websocket的netty实现网上一搜一大把)
客户端的websocket握手请求如:ws://127.0.0.1:9003/websocket?channelId=123456
将客户端的唯一标识123456
与客户端在我们netty
中抽象出的连接对象channel
,维护至全局变量中
private static Map<String,Channel> channels = new ConcurrentHashMap(1000);
推送逻辑为:根据http
请求或者客户端发过来的