聊天与协作
presence 跟踪房间里有谁;客户端事件承载正在输入的提示和光标。消息在被 publish 的那一刻就落地。
浏览器里一行用来监听,服务器上一行用来发送。没有我们的 SDK 要学——下面这些库就是你已经在用的,只是把它们指向 PushCaster。
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)})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 和密钥来自仪表盘;你选的集群是主机的一部分。
一个实时功能,是少量产品代码压在大量投递机制之上:谁 subscribe 了,谁有权限,谁还在。这就是后半部分,而且已经在运行。
四种频道
public、private、presence,以及当负载连我们也不该读到时用的 private-encrypted。
publish 一次,抵达所有人
来自你服务器的一次调用会抵达每一个订阅者,你的代码不必去记谁在听。
把 presence 当作频道
房间里有谁,由频道来回答,而不是由你辛苦同步的某个存储。
client events
正在输入的提示和光标直接在订阅者之间流转,有速率限制,且不经过你。
生命周期 Webhook
在线人数和成员变化会带着签名头回传给你,好让你的后端对连接所看到的一切作出反应。
在哪儿运行由你决定
应用创建在某个集群里,它的连接也在那里终止。当前列表在状态页上。
投递与计费跑在彼此分开的层上。control plane 出故障会让仪表盘降级,但不会中断投递。
集群对消息投递是高可用的,对 presence 则不是。如果某个 presence 存储丢失,presence 和在线人数会降级,而 public 与 private 频道仍在继续投递——这件事在这里读到,好过日后自己撞上。
聊天、仪表盘、通知、共享文档。每一样底下都是同一个念头:有什么变了,而在看的人都该知道。
presence 跟踪房间里有谁;客户端事件承载正在输入的提示和光标。消息在被 publish 的那一刻就落地。
指标和订单流一变化,就推送到每一个打开着的仪表盘——没有要调的轮询间隔,也没有数字其实已经不对的那段空窗。
服务端的一个事件,会在触发它的同一次往返里,抵达用户开着的每一台设备。
由 presence 跟踪成员的共享状态——画布、实时比分,以及任何两个人必须看到同一样东西的场景。
每个应用三到六行——不需要重写应用,只改连接配置。
凭据不会沿用,另外还有几处真实的差异值得先读一读。这两件事在对比页上都写全了。
兼容性与迁移的细节 const pusher = new Pusher(APP_KEY, {- cluster: 'eu',+ wsHost: 'ws-eu1.pushcaster.io',+ wsPort: 443,+ forceTLS: true, })只有一张价目表。没有套餐、没有档位、没有按人计费、没有月度承诺——你发出多少、开着多久、传了多少,就付多少。
USD · 生效 2026年9月1日
发布的消息
送达的消息
连接时长
Connection milliseconds
由 pricing API 实时发布。所含额度是这张价目表里的一部分,不是免费套餐。
计费是怎么算的直接从平台读取。我们公开每个组件、每个区域的状态和完整的故障历史——不公布任何我们无法佐证的可用率数字。
WebSocket 服务
客户端连接、订阅与事件投递。
Publish API
把事件从你的服务器 publish 到 PushCaster。
仪表盘
登录以及管理你的应用。
Control plane
应用配置、计费与账户管理。