作为一个开发者,你可能已经利用过RESTAPI来构建和集成各种应用。RESTAPI是基于HTTP协议的交互模式,它使得客户端和服务器可以通过请求和响应来进行数据交换,简单、灵活、通用。
然而,当你开发实时应用,如IM聊天、协作等应用时,意味着客户端需要不断向服务器请求才能获取到最新数据,这将浪费大量网络流量和资源,导致数据服务器托管网延迟。要么采用复杂的WebSocket协议,但无疑会增加开发的难度和成本。为此,我们是否能找一种更简便、低成本的解决方案呢?答案是肯定的,它就是Pushpin。
什么是Pushpin?
Pushpin是用Rust和C++编写的反向代理服务器。它可以让你在不修改后端代码的情况下,为你的RESTAPI添加实时通信功能。它支持WebSocket、HTTP流和HTTP长轮询等多种实时协议,让你的前端和后端之间实现双向通信。
Pushpin不会缓存数据,不会影响应用程序的数据模型,也不会绑定您的API定义。它只是一个中间层,让后端能够根据自己的数据模型来处理客户端的请求。客户端也不必关心“频道”或“消息”的概念,只要发送HTTP请求或WebSocket帧,后端就能根据这些输入来推送实时数据。
Pushpin如何工作?
Pushpin它作为一个中间层,接收前端发来服务器托管网的请求,并转发给后端。如果后端返回了一个普通的HTTP响应,Pushpin就直接返回给前端。如果后端返回了一个特殊的响应,比如带有Grip头部或者带有订阅信息,Pushpin就会保持连接,并等待后端通过控制API推送数据给前端。
这样一来,你就可以在后端使用任何语言和框架来开发RESTAPI,而不需要关心实时协议的细节,只要你按照Pushpin提供的规范来返回响应和推送数据,Pushpin就会自动为你处理好前端和后端之间的实时通信。
Pushpin能做什么?
Pushpin非常适合各种设置,因为它充当代理服务器和发布-订阅代理。
1、代理
最基本的设置是将Pushpin放在典型的Web服务后端前面,后端将数据直接发布到Pushpin。Web服务本身可能会发布数据以响应传入的请求,或者可能存在某种发布数据的后台进程/作业。
2、使用API管理
可以将API管理系统与Pushpin结合使用。将Pushpin放在前面,以便API管理系统不会受到长期连接的影响。此外,Pushpin可以将WebSocket协议转换为HTTP,允许API管理系统对转换后的数据进行操作。
3、使用消息队列
如果要推送大量数据,则可能需要引入中间消息队列。这样,后端进程可以将数据一次性发布到消息队列,队列再通过适配器将数据中继到一个或多个Pushpin实例。Pushpin能够将订阅信息转发到此类适配器,以便消息能发送到具有给定通道订阅者的Pushpin实例。
4、微服务
在微服务环境中,Pushpin可以轻松侦听来自其他微服务的即时更新,而无需集中式消息代理。每个微服务都有自己的Pushpin实例,微服务通过组织自己的API协定而不是特定于供应商的机制相互通信。5、作为大型CDN
由于Pushpin实例互不通信,并且消息传递可以分层,这意味着Pushpin实例可以在地理上分布以创建实时推送CDN。客户端可以连接到最近的区域边缘服务器,事件可以从数据源辐射到边缘。
为了方便集成,提供有许多后端语言和框架的库:
Pushpin在Apache许可证2.0版下获得许可,它是一个让你的RESTAPI变成实时API的神器,它可以为你的应用添加实时通信功能,无缝地与现有的RESTAPI集成。它支持多种实时协议,可以和任何语言和框架配合使用,还提供了高效稳定的服务。如果你想要开发一个实时的应用,不妨试试Pushpin!
项目地址:https://pushpin.org/ 文档地址:https://pushpin.org/docs/about/源码地址:https://github.com/fastly/pushpin
写作不易,转载请注明博文地址,否则禁转!!!
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
郑重申明: 本文文字部分主要参照了Struts2技术内幕,代码主要为OGNL源码中的,从书上抄写的,自己原创的。 无论是不是原创的,绝大多数内容都是Fans同学自己手敲的。 提示:阅读本文前最好先阅读日志– MVC…