WebSockets dưới dạng dịch vụ
Nền tảng realtime được quản lý đứng sau chat và dữ liệu trực tiếp của foony.com, mở cho mọi nhà phát triển tại foony.io.
Một dịch vụ WebSocket giữ kết nối liên tục giữa máy chủ của bạn và mọi client đang kết nối, nên các cập nhật đến ngay khi chúng xảy ra thay vì phải chờ tải lại trang. Foony Realtime lo những phần chẳng mấy hào nhoáng cho bạn: kết nối, kết nối lại, phân phối, presence và lịch sử tin nhắn, tất cả gói gọn sau một SDK nhỏ gọn.
Thử trực tiếp
Mọi thứ bên dưới đang chạy trên dịch vụ production tại realtime.foony.io ngay lúc này. Mở trang này ở một tab thứ hai và xem hai bên phản chiếu nhau.
Presence và con trỏ trực tiếp
Mọi người đang đọc trang này đều xuất hiện ở đây, thẳng từ presence của channel. Vị trí con trỏ di chuyển dưới dạng tin nhắn tạm thời, tầng độ trễ thấp bỏ qua hoàn toàn phần lưu trữ.
Chat trực tiếp
Đây là chat thật cho trang này, cùng phòng @foony/chat mà mọi trang Foony và phòng game đều chạy. Tin nhắn đến qua một channel có lịch sử, và khi gửi thì đi qua máy chủ của Foony nên mọi tin nhắn đều được kiểm duyệt.
Gần đây chưa ai nói gì cả. Hãy là người phá băng nào.
Đồng Bộ Cơ Sở Dữ Liệu
Đây là pipeline production của foony.com: gõ bất kỳ tên người dùng Foony nào và hàng dữ liệu Postgres công khai của họ sẽ chảy về qua WebSocket của trang, rồi tiếp tục cập nhật trực tiếp khi họ chơi. Không polling, không API endpoint.
Đang tra cứu…
Vì sao các đội mua WebSocket thay vì tự xây
- Kết nối lại mà không mất tin nhắn. Trình duyệt liên tục rớt kết nối. Client tiếp tục từ chỗ bị ngắt nhờ phát lại lịch sử, nên kết nối chập chờn không đồng nghĩa với mất tin nhắn.
- Fan-out ở quy mô lớn. Gửi một tin nhắn tới cả trăm nghìn người đăng ký trong chưa đầy một giây là một bài toán hệ thống phân tán khó nhằn. Ở đây, đó là toàn bộ công việc.
- Hiện diện không cần ghi sổ. Xem ai đang online ngay lúc này và phản ứng với các sự kiện vào, cập nhật và rời đi, mà không cần tự viết logic heartbeat và timeout.
- Không cần lập kế hoạch dung lượng. Máy chủ WebSocket có trạng thái, nên tự mở rộng nghĩa là phải draining, sharding và định tuyến sticky. Một dịch vụ được quản lý biến việc đó thành máy nhắn tin của người khác.
Bạn nhận được gì với Foony Realtime
Kênh và pub/sub
Fan out các sự kiện có tên qua WebSocket hoặc REST tới các kênh theo phạm vi ứng dụng (ví dụ chat:lobby) với ngữ nghĩa gửi dự đoán được.
Hiện diện
Theo dõi ai đang online, tự động làm mới thành viên và phản ứng với các sự kiện vào, cập nhật và rời đi.
Lịch sử tin nhắn
Phát lại các tin nhắn gần đây từ bộ lưu trữ bền vững để client khôi phục gọn gàng sau khi kết nối lại.
Xác thực token
Tạo các token client ngắn hạn từ backend của bạn với quyền publish, subscribe, hiện diện và lịch sử ở cấp độ kênh.
Tương thích Pusher
Nói giao thức Pusher, nên các ứng dụng pusher-js và Laravel Echo kết nối bằng một thay đổi cấu hình thay vì phải viết lại.
Đồng Bộ Cơ Sở Dữ Liệu
Stream các thay đổi Postgres thẳng tới client đã đăng ký dưới dạng truy vấn trực tiếp, không polling và không code kết dính.
Toàn bộ tích hợp chỉ vài dòng:
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' });Đã thử lửa trên game thật
Foony sử dụng Foony Realtime rất nhiều cho chat và cập nhật cơ sở dữ liệu thời gian thực. Khoảng 1,5 triệu người chơi mỗi tháng dựa vào foony.io cho khoảng 500 triệu tin nhắn, và một game nhiều người chơi chỉ cảm giác đúng khi những tin nhắn đó đến nhanh, đúng thứ tự, và chính xác một lần. Foony sẽ không thể có được nếu thiếu sự đáng tin cậy và tiết kiệm chi phí của foony.io.
Xem nó hoạt động trong bất kỳ game nào của các game của chúng tôi, rồi có được hạ tầng tương tự với một bảng điều khiển và một SDK tại foony.io.

Thử nó trên lưu lượng của chính bạn
Gói miễn phí bao gồm 9 triệu tin nhắn mỗi tháng. Không cần thẻ tín dụng.
Câu hỏi thường gặp
WebSockets dưới dạng dịch vụ là gì?
Một nền tảng được quản lý sở hữu các kết nối liên tục giữa app của bạn và người dùng của nó. Thay vì tự chạy máy chủ WebSocket của riêng mình, client của bạn kết nối tới dịch vụ, backend của bạn phát tin nhắn tới các kênh qua một SDK hoặc REST, và dịch vụ xử lý việc gửi, kết nối lại, hiện diện, và lịch sử.
Foony Realtime khác gì so với Pusher hay Ably?
Nó bao phủ cùng bề mặt cốt lõi gồm kênh, hiện diện, lịch sử, và xác thực token, và nó nói giao thức Pusher, nên nó hoạt động như một giải pháp thay thế Pusher cắm-là-chạy. Sự khác biệt là nguồn gốc và giá cả. Nó được xây dựng cho foony.com, chính trang game nhiều người chơi của chúng tôi, và gói miễn phí bao gồm 9 triệu tin nhắn mỗi tháng.
Tôi có phải viết lại app để chuyển đổi không?
Thường thì không. Các app pusher-js và Laravel Echo có thể trỏ tới Foony Realtime chỉ với một thay đổi cấu hình. Dự án mới dùng SDK @foony/realtime cho JavaScript và TypeScript, SDK Go, hoặc REST API từ bất kỳ ngôn ngữ nào.
Nó tốn bao nhiêu?
Gói miễn phí bao gồm 9 triệu tin nhắn mỗi tháng. Các gói trả phí thêm dung lượng hàng tháng, và mức sử dụng vượt gói được tính phí theo từng triệu tin nhắn. Các con số hiện tại có tại foony.io/pricing.