← Chủ đề

Giải pháp thay thế Pusher: so sánh lựa chọn được lưu trữ sẵn và tự chạy

Ably, PubNub, Laravel Reverb, Soketi, Socket.IO, Centrifugo, Supabase, Firebase và Hibira đặt cạnh nhau: ai vận hành máy chủ, tính giá thế nào và cái nào vẫn dùng được pusher-js.

Người ta tìm giải pháp thay thế Pusher thường vì một trong ba lý do: hóa đơn tăng nhanh hơn ứng dụng, cluster gần nhất quá xa người dùng, hoặc muốn tự chạy máy chủ. Lựa chọn nào phù hợp phụ thuộc vào lý do đó, cộng thêm một câu hỏi kỹ thuật: có giữ giao thức Pusher để pusher-js, Laravel Echo và SDK phía máy chủ vẫn chạy được không?

Tổng quan các lựa chọn

Giấy phép và giao thức lấy từ kho mã hoặc tài liệu của từng dự án, kiểm tra ngày 2026-10-26. Nguồn giá của từng dịch vụ có trong các trang so sánh.

Giữ pusher-js và SDK phía máy chủ

Tự vận hành
Laravel Reverbhoặc Soketi
Được lưu trữ sẵn
Hibirahoặc Reverb được quản lý trên Laravel Cloud

Sẵn sàng viết lại phần thời gian thực

Tự vận hành
Socket.IOhoặc Centrifugo
Được lưu trữ sẵn
Ably hoặc PubNubhoặc Supabase, Firebase
Hai câu hỏi thu hẹp danh sách

Giữ giao thức Pusher

Nếu giữ giao thức, việc chuyển chỉ là đổi cấu hình: host, key và secret mới trong thư viện máy chủ và trong pusher-js hoặc Laravel Echo. Kênh riêng tư, kênh presence, sự kiện phía client và webhook vẫn hoạt động như cũ. Bạn có thể chạy song song hai dịch vụ trong lúc client cũ cập nhật, nên không cần ngày chuyển đổi.

  • Được lưu trữ sẵn, tương thích Pusher: Hibira chạy máy chủ ở Hồng Kông với gói cố định hằng tháng, đếm mỗi lần phát một lần dù có bao nhiêu người đăng ký, và bao gồm thông báo đẩy tương thích Beams. Laravel Cloud cung cấp Reverb được quản lý cho ứng dụng lưu trữ ở đó; xem Lưu trữ Laravel Reverb.
  • Tự chạy, tương thích Pusher: Laravel Reverb do đội Laravel duy trì. Soketi vẫn chạy nhưng bản phát hành cuối là tháng 3 năm 2024; xem Thay thế Soketi.

Đổi giao thức

Ably, PubNub, Supabase Realtime và Firebase đều có SDK riêng, nên mã client, endpoint xác thực và mã phát phía máy chủ đều phải đổi. Đổi lại, mỗi dịch vụ có thứ Pusher không có: Ably có mạng edge toàn cầu và lịch sử tin nhắn, PubNub có lưu trữ và function, Supabase phát luồng thay đổi của Postgres, Firebase là cơ sở dữ liệu đồng bộ với client.

Socket.IO và Centrifugo là máy chủ bạn tự chạy. Socket.IO là thư viện trong ứng dụng Node.js; Centrifugo là máy chủ độc lập với SDK client riêng. Cả hai đều có nghĩa là viết lại phần thời gian thực và tự vận hành nó.

Cách chọn

  • Vấn đề là hóa đơn Pusher: xem từng dịch vụ đếm tin nhắn thế nào. Pusher, Ably và Supabase đếm mỗi lần gửi tới người nhận; Hibira đếm mỗi lần phát một lần. Công cụ tính chi phí tính giá cùng một lưu lượng trên Pusher, Ably và Hibira.
  • Người dùng ở châu Á: xem máy chủ đặt ở đâu, không phải công ty ở đâu. Xem WebSocket thời gian thực ở châu Á.
  • Không muốn bên thứ ba nằm trên đường đi của dữ liệu: chạy Reverb trên máy chủ của bạn, thêm Redis khi cần nhiều hơn một máy.
  • Cần tính năng ngoài Channels: lịch sử tin nhắn, đồng bộ cơ sở dữ liệu hay hàm serverless thì xem Ably, Firebase, Supabase hoặc PubNub.

Câu hỏi thường gặp

Giải pháp thay thế Pusher rẻ nhất là gì?

Tự chạy Reverb hoặc Soketi không tốn phí giấy phép, nhưng máy chủ và thời gian trực hệ thống đều tốn tiền. Với dịch vụ được lưu trữ sẵn, câu trả lời phụ thuộc vào fan-out: dịch vụ đếm mỗi lần gửi sẽ đắt khi một sự kiện tới nhiều người đăng ký, còn Hibira đếm mỗi lần phát một lần. Hãy tính lưu lượng của bạn trong công cụ tính chi phí.

Giải pháp thay thế Pusher nào dùng được với pusher-js và Laravel Echo?

Laravel Reverb, Soketi và Hibira dùng giao thức Pusher, Reverb được quản lý trên Laravel Cloud cũng vậy. Ably, PubNub, Supabase, Firebase, Socket.IO và Centrifugo dùng SDK riêng. Tuy vậy, Ably cũng có adapter cho client dùng giao thức Pusher.

Có thể chuyển khỏi Pusher mà không sửa mã không?

Có, nếu chuyển sang dịch vụ tương thích Pusher: chỉ cần đổi host, key và secret trong cấu hình. Hướng dẫn chuyển đổi có từng bước.

Tên sản phẩm là nhãn hiệu của chủ sở hữu.