WebSockets як сервіс

Керована платформа реального часу, що стоїть за чатом і живими даними foony.com, відкрита для кожного розробника на foony.io.

WebSocket-сервіс тримає постійне з'єднання відкритим між твоїми серверами й кожним підключеним клієнтом, тож оновлення приходять у мить, коли вони стаються, а не після наступного оновлення сторінки. Foony Realtime бере на себе всю невдячну роботу: з'єднання, перепідключення, розсилку, присутність та історію повідомлень — усе за одним невеликим SDK.

1.5Mгравців обслуговано щомісяця
500M+повідомлень доставлено на місяць
<100msціль розсилки p95

Спробуй наживо

Усе нижче працює з робочим сервісом на realtime.foony.io прямо зараз. Відкрий цю сторінку в другій вкладці й дивись, як вони віддзеркалюють одна одну.

Присутність і живі курсори

Усі, хто читає цю сторінку, з'являються тут — прямо з присутності каналу. Позиції курсорів передаються як ефемерні повідомлення — низьколатентний рівень, який повністю оминає збереження.

1 зараз тутПорухай мишкою. Клацни, щоб помахати.

Живий чат

Це справжній чат для цієї сторінки — та сама кімната @foony/chat, на якій працює кожна сторінка Foony та кожна ігрова кімната. Повідомлення приходять одним каналом з історією, а надсилання проходять через сервер Foony, тож кожне повідомлення модерується.

Нещодавно ніхто нічого не казав. Будь тим, хто розтопить кригу.

Синхронізація бази даних

Це продакшн-пайплайн foony.com: введи будь-яке ім'я користувача Foony, і його публічний рядок Postgres потече через WebSocket сайту, а потім оновлюватиметься наживо, поки він грає. Жодного опитування, жодних API-ендпоінтів.

Шукаємо…

Чому команди купують WebSockets замість того, щоб їх будувати

  • Перепідключення, які не втрачають повідомлення. Браузери постійно розривають з'єднання. Клієнти продовжують з того місця, де зупинилися, завдяки відтворенню історії, тож нестабільне з'єднання не означає втрачених повідомлень.
  • Розсилка в масштабі. Доставити одне повідомлення сотні тисяч підписників менш ніж за секунду — це складна проблема розподілених систем. Тут це вся наша робота.
  • Присутність без бухгалтерії. Дивись, хто зараз онлайн, і реагуй на події входу, оновлення та виходу, не пишучи власну логіку heartbeat і тайм-аутів.
  • Жодного планування потужностей. WebSocket-сервери зберігають стан, тож масштабувати їх самому означає draining, шардинг і sticky-маршрутизацію. Керований сервіс перекладає це на чужий пейджер.

Що ти отримуєш з Foony Realtime

Канали та pub/sub

Розсилай іменовані події через 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 для нашого чату та оновлень бази даних у реальному часі. Близько 1,5 мільйона гравців на місяць покладаються на foony.io заради приблизно 500 мільйонів повідомлень, а багатокористувацька гра відчувається правильно лише тоді, коли вони приходять швидко, по порядку і рівно один раз. Foony був би неможливим без надійності та економічності foony.io.

8 Ball Pool online multiplayer billiards thumbnailDinoMight Bomberman style online multiplayer thumbnailChess online multiplayer board thumbnail9 Ball Pool online multiplayer billiards thumbnailSnooker online multiplayer thumbnailCarrom board game online multiplayer thumbnail

Побач це в дії в будь-якій із наших ігор, а потім отримай ту саму інфраструктуру з панеллю керування та SDK на foony.io.

Bulby, талісман Foony

Спробуй на власному трафіку

Безкоштовний тариф включає 9 мільйонів повідомлень на місяць. Кредитна картка не потрібна.

Часті запитання

Що таке WebSockets як сервіс?

Керована платформа, що бере на себе постійні з'єднання між твоїм застосунком і його користувачами. Замість запуску власних WebSocket-серверів твої клієнти підключаються до сервісу, твій бекенд публікує повідомлення в канали через SDK або REST, а сервіс займається доставкою, повторними підключеннями, присутністю та історією.

Чим Foony Realtime відрізняється від Pusher чи Ably?

Він охоплює той самий базовий набір: канали, присутність, історію й автентифікацію за токенами, і він розмовляє протоколом Pusher, тож працює як пряма заміна Pusher. Різниця — у походженні та ціні. Його створено для foony.com, нашого власного сайту багатокористувацьких ігор, а безкоштовний тариф включає 9 мільйонів повідомлень на місяць.

Чи мушу я переписувати свій застосунок, щоб перейти?

Зазвичай ні. Застосунки на pusher-js та Laravel Echo можна спрямувати на Foony Realtime, змінивши конфігурацію. Нові проєкти використовують SDK @foony/realtime для JavaScript і TypeScript, Go SDK або REST API будь-якою мовою.

Скільки це коштує?

Безкоштовний тариф включає 9 мільйонів повідомлень на місяць. Платні тарифи додають місячну ємність, а використання понад твій тариф оплачується за мільйон повідомлень. Актуальні цифри дивись на foony.io/pricing.

8 Ball Pool online multiplayer billiards icon