Pushpin:开源即时通信神器,让你的API秒变实时API,轻松实现WebSocket,HTTP流和HTTP长轮询等服务
作为一个开发者,你可能已经利用过REST API来构建和集成各种应用。REST API是基于HTTP协议的交互模式,它使得客户端和服务器可以通过请求和响应来进行数据交换,简单、灵活、通用。
然而,当你开发实时应用,如IM聊天、协作等应用时,意味着客户端需要不断向服务器请求才能获取到最新数据,这将浪费大量网络流量和资源,导致数据延迟。要么采用复杂的WebSocket协议,但无疑会增加开发的难度和成本。为此,我们是否能找一种更简便、低成本的解决方案呢?答案是肯定的,它就是Pushpin。
什么是Pushpin?
Pushpin是用Rust和C++编写的反向代理服务器。它可以让你在不修改后端代码的情况下,为你的REST API添加实时通信功能。它支持WebSocket、HTTP流和HTTP长轮询等多种实时协议,让你的前端和后端之间实现双向通信。
Pushpin不会缓存数据,不会影响应用程序的数据模型,也不会绑定您的 API 定义。它只是一个中间层,让后端能够根据自己的数据模型来处理客户端的请求。客户端也不必关心“频道”或“消息”的概念,只要发送 HTTP 请求或 WebSocket 帧,后端就能根据这些输入来推送实时数据。
Pushpin如何工作?

Pushpin它作为一个中间层,接收前端发来的请求,并转发给后端。如果后端返回了一个普通的HTTP响应,Pushpin就直接返回给前端。如果后端返回了一个特殊的响应,比如带有Grip头部或者带有订阅信息,Pushpin就会保持连接,并等待后端通过控制API推送数据给前端。
这样一来,你就可以在后端使用任何语言和框架来开发REST API,而不需要关心实时协议的细节,只要你按照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 版下获得许可,它是一个让你的REST API变成实时API的神器,它可以为你的应用添加实时通信功能,无缝地与现有的REST API集成。它支持多种实时协议,可以和任何语言和框架配合使用,还提供了高效稳定的服务。如果你想要开发一个实时的应用,不妨试试Pushpin!
项目地址:https://pushpin.org/ 文档地址:https://pushpin.org/docs/about/ 源码地址:https://github.com/fastly/pushpin
写作不易,转载请注明博文地址,否则禁转!!!

Pushpin:开源即时通信神器,让你的API秒变实时API,轻松实现WebSocket,HTTP流和HTTP长轮询等服务的更多相关文章
- 用.NET MVC实现长轮询,与jQuery.AJAX即时双向通信
两周前用长轮询做了一个Chat,并移植到了Azure,还写了篇博客http://www.cnblogs.com/indream/p/3187540.html,让大家帮忙测试. 首先感谢300位注册用户 ...
- Web 通信 之 长连接、长轮询(转)
Web 通信 之 长连接.长轮询(long polling) 基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强 ...
- Web 通信 之 长连接、长轮询(long polling)
基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强了程序的实时性和交互性. 一.什么是长连接.长轮询? 用通俗易 ...
- Web 通信 之 长连接、长轮询(long polling)(转)
基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强了程序的实时性和交互性. 一.什么是长连接.长轮询? 用通俗易 ...
- [转]Web 通信 之 长连接、长轮询(long polling)
本篇文章转载自Web 通信之长连接.长轮询(longpolling),版权归作者所有. 转者按:随着技术的发展,在HTML5中,可以通过WebSocket技术来完成长连接的开发,虽然如此,本文依然存在 ...
- Web 通信 之 长连接、长轮询(long polling)(转载)
基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强了程序的实时性和交互性. 一.什么是长连接.长轮询? 用通俗易 ...
- Web 通信 之 长连接、长轮询(转)
Web 通信 之 长连接.长轮询(long polling) 基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强 ...
- 分享一个基于长连接+长轮询+原生的JS及AJAX实现的多人在线即时交流聊天室
实现网页版的在线聊天室的方法有很多,在没有来到HTML5之前,常见的有:定时轮询.长连接+长轮询.基于第三方插件(如FLASH的Socket),而如果是HTML5,则比较简单,可以直接使用WebSoc ...
- Web通信之:长轮询(long-polling)(转)
Web通信之:长轮询(long-polling) “轮询”是个耐人寻味的词,第一次看到它的时候我就直接理解为“轮流查询”了.但是看到了英文才知道这个是网络通信专业的术语.轮询,其实就是一群人在排队买东 ...
- 中秋礼物!开源即时通信GGTalk安卓版全新源码!
经过连续两个多月的努力(开发.调试.测试.改bug),我们终于赶在中秋国庆之前能把全新的GGTalk Android版本献给大家. 4年之前我们就推出了GGTalk Android的第一个版本,但是功 ...
随机推荐
- 【WALT】scale_exec_time() 代码详解
@ 目录 [WALT]scale_exec_time() 代码详解 代码展示 代码逻辑: 为什么归一化? ⑴ 将 CPU cycles 转换为 CPU 当前频率 ⑵ 归一化 delta [WALT]s ...
- 使用 OpenAPI 构建 RESTful API 文档
作为一名开发者,往往需要编写程序的 API 文档,尤其是 Web 后端开发者,在跟前端对接 HTTP 接口的时候,一个好的 API 文档能够大大提高协作效率,降低沟通成本,本文就来聊聊如何使用 Ope ...
- 瞬间抠图!揭秘 ZEGO 绿幕抠图算法背后的技术
抠图是图像处理中最常见的操作之一,指的是将图像中需要的部分从画面中精确的提取出来. 抠图的主要功能是为了后期的合成做准备.在 Photoshop 中,抠图的方法有很多种,最常见的有通道抠图.蒙版抠图. ...
- Java 中怎样将 bytes 转换为 long 类型?
将bytes 转换为long类型: 第一种方式: String 接收 bytes 的构造器转成 String,再 Long.parseLong: 但此种情况需要注意:字节数组中的每个字节都必须是有效的 ...
- .net通用RSA加密工具类
目前最流行的加密算法莫过于RSA了,以下是我们.net/.net core C#生成环境用的RSA加密工具类,在此分享给大家. using System; using System.IO; using ...
- docker下nginx配置
一步一坑安装docker nginx 首先选择适当版本镜像下载 我选的: nginx:1.16.0 docker pull nginx:1.16.0 安装完毕之后创建挂载文件夹 : mkdir /u ...
- Jenkins远程执行shell脚本,超时报错(ERROR: Exception when publishing, exception message [Exec timed out or was interrupted after 120,001 ms])
通过Jenkins远程执行脚本时,发现Jenkins构建任务失败,但是服务器本身的脚本是生效的. 排查确认是Jenkins构建任务超时,导致Jenkins看板显示任务构建失败,但是服务器上的自动脚本执 ...
- win10安装Redis5、配置自启动教程
前提条件:首先我安装的是压缩包版的Redis5.0.14.1,下载链接为 https://github.com/tporadowski/redis/releases 安装教程 下载软件并解压 进入软件 ...
- .NET爬取美图官网首页数据实战
前言: 在当今信息化社会,网络数据分析越来越受到重视.而作为开发人员,掌握一门能够抓取网页内容的语言显得尤为重要.在此篇文章中,将分享如何使用 .NET构建网络抓取工具.详细了解如何执行 HTTP 请 ...
- 《高级程序员 面试攻略 》RocketMQ 如何保证顺序性
RocketMQ 提供了一种称为顺序消息的机制来确保消息的顺序性.下面是一些关键的方法和概念: 1. 顺序消息:顺序消息是指在发送和消费过程中,消息按照特定的顺序进行处理.RocketMQ 通过将消息 ...