跳到正文

当有什么变了,所有人同一刻就看见。

PushCaster 是面向应用的托管实时基础设施。把一次更新 publish 出去,所有连接着的浏览器、手机和仪表盘会在同一刻拿到它——不用轮询,不用刷新按钮,也不用你自己运维连接服务器。

两次调用,就已经跑起来了

浏览器里一行用来监听,服务器上一行用来发送。没有我们的 SDK 要学——下面这些库就是你已经在用的,只是把它们指向 PushCaster。

在浏览器里——监听这个事件

client.js
js
import Pusher from 'pusher-js'// The same library you already use. One host override points it at PushCaster.const pusher = new Pusher('APP_KEY', {  wsHost: 'ws-eu1.pushcaster.io',  wsPort: 443,  forceTLS: true,})const channel = pusher.subscribe('presence-room')channel.bind('message', (data) => {  render(data.body)})

在你的服务器上——把它发出去

server.js
js
import Pusher from 'pusher'const pusher = new Pusher({  appId: 'APP_ID',  key: 'APP_KEY',  secret: 'APP_SECRET',  host: 'api-eu1.pushcaster.io',  useTLS: true,})await pusher.trigger('presence-room', 'message', {  body: 'Deployed to production',})

app id、key 和密钥来自仪表盘;你选的集群是主机的一部分。

PushCaster 提供什么

一个实时功能,是少量产品代码压在大量投递机制之上:谁 subscribe 了,谁有权限,谁还在。这就是后半部分,而且已经在运行。

01

四种频道

public、private、presence,以及当负载连我们也不该读到时用的 private-encrypted。

02

publish 一次,抵达所有人

来自你服务器的一次调用会抵达每一个订阅者,你的代码不必去记谁在听。

03

把 presence 当作频道

房间里有谁,由频道来回答,而不是由你辛苦同步的某个存储。

04

client events

正在输入的提示和光标直接在订阅者之间流转,有速率限制,且不经过你。

05

生命周期 Webhook

在线人数和成员变化会带着签名头回传给你,好让你的后端对连接所看到的一切作出反应。

06

在哪儿运行由你决定

应用创建在某个集群里,它的连接也在那里终止。当前列表在状态页上。

你的消息实际走的路

投递与计费跑在彼此分开的层上。control plane 出故障会让仪表盘降级,但不会中断投递。

集群对消息投递是高可用的,对 presence 则不是。如果某个 presence 存储丢失,presence 和在线人数会降级,而 public 与 private 频道仍在继续投递——这件事在这里读到,好过日后自己撞上。

实时层——每个数据包都从这里过你的服务器trigger()api-eu1publishws-eu1deliverWeb 应用移动端设备仅用于配置control plane身份 · 计费 · 配置

同一件事,换了身衣服

聊天、仪表盘、通知、共享文档。每一样底下都是同一个念头:有什么变了,而在看的人都该知道。

presence-room-42
presence

聊天与协作

presence 跟踪房间里有谁;客户端事件承载正在输入的提示和光标。消息在被 publish 的那一刻就落地。

private-metrics
private

实时仪表盘

指标和订单流一变化,就推送到每一个打开着的仪表盘——没有要调的轮询间隔,也没有数字其实已经不对的那段空窗。

private-user-1e9
private

通知

服务端的一个事件,会在触发它的同一次往返里,抵达用户开着的每一台设备。

presence-game
presence

多人协同与实时状态

由 presence 跟踪成员的共享状态——画布、实时比分,以及任何两个人必须看到同一样东西的场景。

已经在用 Pusher 的 Channels 库了吗?

每个应用三到六行——不需要重写应用,只改连接配置。

凭据不会沿用,另外还有几处真实的差异值得先读一读。这两件事在对比页上都写全了。

兼容性与迁移的细节
src/realtime.tsunified diff
const pusher = new Pusher(APP_KEY, {
- cluster: 'eu',
+ wsHost: 'ws-eu1.pushcaster.io',
+ wsPort: 443,
+ forceTLS: true,
})

从预付钱包里按量付费

只有一张价目表。没有套餐、没有档位、没有按人计费、没有月度承诺——你发出多少、开着多久、传了多少,就付多少。

价目表

USD · 生效 2026年9月1日

  • 发布的消息

    $0.1每百万条消息
  • 送达的消息

    $0.1每百万条消息
  • 连接时长

    $0.2每百万连接分钟
  • Connection milliseconds

    $0.2每百万连接分钟

由 pricing API 实时发布。所含额度是这张价目表里的一部分,不是免费套餐。

计费是怎么算的

我们公开状态,而不是承诺

直接从平台读取。我们公开每个组件、每个区域的状态和完整的故障历史——不公布任何我们无法佐证的可用率数字。

  • 文档

    频道的种类、认证、Webhook,以及完整的错误码参考。

  • 状态页

    每个组件、每个区域的状态,延迟,以及故障历史。

  • 支持

    从你的账户里开一张工单。工程上的问题会送到真正做这件事的人手里。

平台状态

所有系统运行正常
  • WebSocket 服务

    客户端连接、订阅与事件投递。

    所有系统运行正常
  • Publish API

    把事件从你的服务器 publish 到 PushCaster。

    所有系统运行正常
  • 仪表盘

    登录以及管理你的应用。

    所有系统运行正常
  • Control plane

    应用配置、计费与账户管理。

    所有系统运行正常
  • eu1 · 西欧
  • eu2 · 中欧

$ export PUSHER_HOST=ws-eu1.pushcaster.io

换一个主机。
代码原样保留。

同样的协议,同样的 SDK,同样的认证握手。建一个应用,把你本来就在用的库指向 PushCaster,你的实时功能几分钟内就能上线。

Support