← 主題

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。

產品名稱為其所有者的商標。