WebSocket 即服务
支撑 foony.com 聊天和实时数据的托管实时平台,在 foony.io 向每位开发者开放。
WebSocket 服务会在你的服务器和每个连接的客户端之间保持一条常开的连接,所以更新一发生就会到达,而不用等到下次刷新页面。Foony Realtime 帮你搞定那些不起眼的活儿:连接、重连、消息分发、在线状态和消息历史,全都藏在一个小巧的 SDK 后面。
来实时体验一下
下面的一切现在就跑在 realtime.foony.io 的生产服务上。用另一个标签页打开这个页面,看看两边怎么互相同步。
在线状态与实时光标
每个正在看这个页面的人都会出现在这里,直接来自频道的在线状态。光标位置以临时消息的形式传输,这是完全跳过存储的低延迟通道。
实时聊天
这就是这个页面真正的聊天,和每个 Foony 页面、每个游戏房间用的是同一个 @foony/chat 房间。消息通过一个带历史的频道到达,发送会经过 Foony 的服务器,所以每条消息都会被审核。
最近没人说话。来当第一个破冰的吧。
数据库同步
这就是 foony.com 的生产级流水线:输入任意一个 Foony 用户名,他们的公开 Postgres 数据行就会通过网站的 WebSocket 流式传进来,还会随着他们玩游戏实时更新。不用轮询,也不用 API 接口。
查找中…
为什么大家宁愿买 WebSockets 也不自己造
- 重连不丢消息. 浏览器时不时就会断连。客户端通过历史回放从中断的地方接着来,所以就算连接不稳,也不会漏掉消息。
- 大规模分发. 在一秒内把一条消息送达十万个订阅者,是个棘手的分布式系统难题。而在这里,它就是我们的全部工作。
- 无需自己记账的在线状态. 实时查看现在谁在线,并对进入、更新和离开事件做出响应,不用自己写心跳和超时逻辑。
- 无需容量规划. WebSocket 服务器是有状态的,所以自己扩容意味着排空、分片和粘性路由。有了托管服务,这些就成了别人半夜被呼叫的活儿。
Foony Realtime 能给你什么
频道与发布/订阅
通过 WebSocket 或 REST 把具名事件分发到应用范围内的频道(比如 chat:lobby),投递语义可预期。
在线状态
跟踪谁在线,自动刷新成员列表,并对进入、更新和离开事件做出响应。
消息历史
从持久化存储回放最近的消息,让客户端在重连后干净利落地恢复。
令牌鉴权
从你的后端生成短时效的客户端令牌,带有频道级别的发布、订阅、在线状态和历史权限。
兼容 Pusher
支持 Pusher 协议,所以 pusher-js 和 Laravel Echo 的应用改个配置就能接入,不用重写。
数据库同步
把 Postgres 的变更作为实时查询直接流式推送给订阅的客户端,不用轮询,也不用胶水代码。
整个集成就几行代码:
const realtime = new Realtime({ authCallback });
const channel = realtime.channels.get('chat:lobby');
channel.on((message) => {
showMessage(message.data);
});
await channel.publish('message', { text: 'hello' });
await channel.presence.enter({ name: 'Acorn' });经过真实游戏的实战考验
Foony 大量使用 Foony Realtime 来实现聊天和实时数据库更新。每月约有 150 万玩家依赖 foony.io 传递大约 5 亿条消息,而一款多人游戏只有在这些消息快速、按序、且不重不漏地送达时才玩起来顺手。没有 foony.io 的可靠性和高性价比,Foony 根本不可能存在。
在我们的 任何游戏里都能亲眼看到它的表现,然后在 foony.io 上用同样的基础设施,还附带一个控制台和一套 SDK。

用你自己的流量试试看
免费套餐每月包含 900 万条消息。无需信用卡。
常见问题
什么是 WebSockets 即服务?
这是一个托管平台,负责维护你的应用和用户之间的持久连接。你不用自己运行 WebSocket 服务器,而是让客户端连接到这个服务,你的后端通过 SDK 或 REST 把消息发布到频道,服务则负责消息投递、重连、在线状态和历史记录。
Foony Realtime 和 Pusher 或 Ably 有什么不同?
它覆盖了同样的核心功能:频道、在线状态、历史记录和令牌认证,而且它兼容 Pusher 协议,所以可以作为 Pusher 的即插即用替代品。区别在于来历和价格。它是为 foony.com——我们自己的多人游戏网站——打造的,而且免费套餐每月包含 900 万条消息。
我需要重写应用才能切换吗?
通常不用。pusher-js 和 Laravel Echo 应用只需改一下配置就能指向 Foony Realtime。新项目可以使用 面向 JavaScript 和 TypeScript 的 @foony/realtime SDK、 Go SDK,或者 REST API ,从任何语言都能接入。
要花多少钱?
免费套餐每月包含 900 万条消息。付费套餐会增加每月额度,超出套餐的用量按每百万条消息计费。最新数据请见 foony.io/pricing.