WebSockets as a Service
foony.comのチャットとライブデータを支えるマネージドリアルタイムプラットフォーム。foony.ioですべての開発者に開放されています。
WebSocketサービスは、あなたのサーバーと接続中のすべてのクライアントとの間で常時つながった接続を保ちます。だから更新は次のページ再読み込みを待つことなく、その瞬間に届きます。Foony Realtimeは、地味だけど大事な部分をあなたの代わりにこなします。接続、再接続、ファンアウト、プレゼンス、メッセージ履歴、すべてを1つの小さなSDKの裏側で。
ライブで試してみよう
以下のすべては、いまこの瞬間にrealtime.foony.ioの本番サービスに対して動いています。このページを別のタブでもう1つ開いて、2つが互いに反映し合う様子を見てみてください。
プレゼンスとライブカーソル
このページを読んでいるみんながここに現れます。チャンネルのプレゼンスから直接どうぞ。カーソルの位置はエフェメラルメッセージとして届きます。ストレージを完全にスキップする低遅延ティアです。
ライブチャット
これはこのページの本物のチャットです。すべてのFoonyページやゲームルームで動いているのと同じ@foony/chatルームです。メッセージは履歴つきの1つのチャンネルで届き、送信はFoonyのサーバーを経由するので、すべてのメッセージがモデレートされます。
最近はまだ誰も発言していません。口火を切りましょう。
データベース同期
これはfoony.comの本番パイプラインです。Foonyのユーザー名を入力すると、その公開Postgres行がサイトのWebSocket経由でストリーミングされ、プレイ中はライブで更新され続けます。ポーリングもAPIエンドポイントも不要です。
検索中…
自作ではなくWebSocketを買う理由
- メッセージを失わない再接続. ブラウザは絶えず接続を切ります。クライアントは履歴の再生で中断したところから再開できるので、接続が不安定でもメッセージを取りこぼしません。
- 大規模なファンアウト. 1つのメッセージを10万人の購読者に1秒以内で届けるのは、難しい分散システムの問題です。ここでは、それがまさに仕事そのものです。
- 面倒な管理なしのプレゼンス. 今この瞬間に誰がオンラインかを確認し、参加・更新・退出イベントに反応できます。独自のハートビートやタイムアウトのロジックを書く必要はありません。
- キャパシティプランニング不要. WebSocketサーバーはステートフルなので、自分でスケールするにはドレイン、シャーディング、スティッキールーティングが必要です。マネージドサービスなら、それは誰か他の人のポケベルの仕事になります。
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をたっぷり活用しています。月に約150万人のプレイヤーがfoony.ioを通じておよそ5億件のメッセージをやり取りしていて、マルチプレイヤーゲームは、それらが速く・順番どおり・きっちり1回だけ届いてこそ気持ちよく動くんです。foony.ioの信頼性とコストパフォーマンスなしには、Foonyは成り立ちませんでした。
実際の動きは、こちらの ゲームでどれでもチェックできます。そして同じインフラを、ダッシュボードとSDKつきでfoony.ioからご利用いただけます。

自分のトラフィックで試してみましょう
無料プランには月900万件のメッセージが含まれています。クレジットカードは不要です。
よくある質問
WebSocketsのサービス提供(as a service)って何ですか?
アプリとユーザーの間の持続的な接続をまるごと引き受けてくれるマネージド型のプラットフォームです。自前のWebSocketサーバーを動かす代わりに、クライアントはサービスに接続し、バックエンドはSDKやRESTを通じてチャンネルにメッセージを送信するだけ。配信・再接続・プレゼンス・履歴はすべてサービスが面倒を見てくれます。
Foony RealtimeはPusherやAblyとどう違うんですか?
チャンネル、プレゼンス、履歴、トークン認証といった同じ基本機能をカバーしていて、Pusherプロトコルにも対応しているので、Pusherのそのまま乗り換えできる代替として使えます。違いは出自と料金です。私たち自身のマルチプレイヤーゲームサイトfoony.comのために作られたもので、無料プランには月900万件のメッセージが含まれています。
乗り換えるにはアプリを書き直さないとダメですか?
たいていは不要です。pusher-jsやLaravel Echoのアプリなら、設定を変えるだけでFoony Realtimeに向けられます。新規プロジェクトでは、 JavaScript・TypeScript向けの@foony/realtime SDK、 Go SDK、または REST API を、どんな言語からでも使えます。
料金はどのくらいですか?
無料プランには月900万件のメッセージが含まれています。有料プランは月ごとの容量を追加でき、プランを超えた分は100万件あたりで課金されます。最新の数字はこちらでご確認ください: foony.io/pricing.