← 专题

Soketi 替代方案:Pusher 协议服务器该迁到哪里

Soketi 最后一次发布是 2024 年 3 月。可以迁移到的兼容 Pusher 选项、配置要改什么,以及如何不停机切换。

Soketi 让自建 Pusher 协议服务器变得很简单,现在仍有很多 Laravel 和 Node.js 应用跑在上面。不过这个项目的脚步慢了下来,依赖它的团队开始问下一步要去哪里。因为 Soketi 使用 Pusher 协议,答案可以只是改设置,而不是重写。

Soketi 的现况

数据取自 Soketi 代码仓库及其版本列表,查询日期 2026-10-26。

今天能用的服务器,可以再用很久。风险在后面:服务器无法在新版 Node.js 上构建、安全性修补没人发布,或某个 bug 得自己修。对于承载每位用户连接的组件,值得在变得紧急之前先规划。

兼容 Pusher 的搬家选项

这些都沿用 pusher-js、Laravel Echo 和 Pusher 服务器端库,所以频道、授权端点和事件都不用动。

价格取自 Laravel Cloud 的价格文档与 pusher.com/channels/pricing,查询日期 2026-10-26。

也可以离开 Pusher 协议,改用 Socket.IO、Centrifugo 或 Ably,但客户端和服务器的程序都要重写。这些在 Pusher 替代方案一页有介绍。

之前

你的服务器
HTTP API
Soketisoketi.example.com:6001
WebSocket
浏览器与 App

之后

你的服务器
同一套 SDK,换主机
Hibiraws.hibira.io:443
WebSocket
浏览器与 App
从 Soketi 换到兼容 Pusher 的服务时改了什么

设置要改什么

只有连接信息。跑在 Soketi 上的 Laravel 应用,.env 通常把 Pusher 驱动指向你自己主机的 6001 端口。换到托管服务,就改指向那个服务:

BROADCAST_CONNECTION=pusher
PUSHER_APP_ID=YOUR_APP_ID
PUSHER_APP_KEY=YOUR_APP_KEY
PUSHER_APP_SECRET=YOUR_APP_SECRET
PUSHER_HOST=ws.hibira.io
PUSHER_PORT=443
PUSHER_SCHEME=https

在 pusher-js 或 Laravel Echo 里,把 wsHost 和端口号改成对应的值,并保留 forceTLS: true。Soketi app manager 的设置,例如每个 app 的连接上限或允许的来源,改到新服务的控制台里设置。

不停机切换

  1. 在新服务创建 app,拷贝它的凭证。
  2. 让服务器把每个事件同时发布到 Soketi 和新服务。Pusher 服务器端库创建两个实例的成本很低。
  3. 发布客户端的变更。新开的页面会连到新主机;旧分页和旧版 App 仍连在 Soketi。
  4. 等 Soketi 的连接数降到零或接近零,停止发布给它,然后关掉。

Webhook 也一样:在第 3 步之前,先把你的端点注册到新服务。从 Pusher 搬家的步骤相同,见迁移指南。

托管服务多给你什么

除了不用运维服务器,托管服务还提供 Soketi 要你自己处理的工具:显示连接数与消息数的控制台、即时显示每个事件的调试控制台、webhook,以及对照方案上限的用量。

调试控制台:即时显示连接、订阅与每个发布的事件
调试控制台:即时显示连接、订阅与每个发布的事件

常见问题

Soketi 还有在维护吗?

最后一个版本 1.6.1 于 2024-03-25 发布,之后的 commit 都是依赖更新。README 本身也提到更新与支持不频繁。它还能跑,但应该规划替代方案。

最接近 Soketi 的替代方案是什么?

想继续自建就用 Laravel Reverb;不想运维服务器就用兼容 Pusher 的托管服务。两者都沿用 Pusher 协议,代码不用改。

离开 Soketi 一定要改客户端程序吗?

不用,只要换到另一个 Pusher 协议的服务器或服务。改的是 .env 以及 pusher-js 或 Echo 选项里的主机、端口号、key 和 secret。

产品名称为其所有者的商标。