WebSockets as a Service

แพลตฟอร์มเรียลไทม์แบบมีการจัดการที่อยู่เบื้องหลังแชทและข้อมูลสดของ 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 endpoint

กำลังค้นหา…

ทำไมทีมต่างๆ ถึงซื้อ WebSockets แทนที่จะสร้างเอง

  • เชื่อมต่อใหม่โดยไม่ทำข้อความหาย. เบราว์เซอร์หลุดการเชื่อมต่อตลอดเวลา ไคลเอนต์จะกลับมาต่อจากจุดที่ค้างไว้ด้วยการรีเพลย์ประวัติ ดังนั้นการเชื่อมต่อที่กระตุกจึงไม่ได้แปลว่าจะพลาดข้อความ
  • กระจายข้อความในระดับสเกลใหญ่. การส่งข้อความหนึ่งข้อความไปยังผู้สมัครรับหนึ่งแสนคนภายในเวลาไม่ถึงวินาทีเป็นปัญหาระบบกระจายที่ยากมาก ที่นี่ มันคืองานทั้งหมดของเรา
  • Presence โดยไม่ต้องทำบัญชีเอง. ดูว่าใครออนไลน์อยู่ตอนนี้ และตอบสนองต่ออีเวนต์เข้า อัปเดต และออก โดยไม่ต้องเขียนลอจิก heartbeat และ timeout เอง
  • ไม่ต้องวางแผนความจุ. เซิร์ฟเวอร์ WebSocket มีสถานะ ดังนั้นการสเกลเองหมายถึงต้อง drain, shard และทำ sticky routing บริการแบบ managed ทำให้เรื่องพวกนี้กลายเป็นเพจเจอร์ของคนอื่น

สิ่งที่คุณได้จาก Foony Realtime

Channels และ pub/sub

กระจายอีเวนต์ที่มีชื่อผ่าน WebSocket หรือ REST ไปยังแชนแนลในขอบเขตแอป (เช่น chat:lobby) ด้วยความหมายการส่งมอบที่คาดเดาได้

Presence

ติดตามว่าใครออนไลน์อยู่ รีเฟรชสมาชิกอัตโนมัติ และตอบสนองต่ออีเวนต์เข้า อัปเดต และออก

ประวัติข้อความ

รีเพลย์ข้อความล่าสุดจากที่เก็บถาวร เพื่อให้ไคลเอนต์กู้คืนได้อย่างเรียบร้อยหลังการเชื่อมต่อใหม่

Token auth

สร้างโทเคนไคลเอนต์อายุสั้นจากแบ็กเอนด์ของคุณ พร้อมสิทธิ์ระดับแชนแนลสำหรับ publish, subscribe, presence และ history

รองรับ Pusher

พูดโปรโตคอล Pusher ได้ ดังนั้นแอป pusher-js และ Laravel Echo จึงเชื่อมต่อได้แค่เปลี่ยนคอนฟิก ไม่ต้องเขียนใหม่

ซิงก์ฐานข้อมูล

สตรีมการเปลี่ยนแปลงของ Postgres ตรงไปยังไคลเอนต์ที่สมัครรับในรูปแบบ live query ไม่ต้องโพลล์ ไม่ต้องเขียนโค้ดเชื่อม

การผสานทั้งหมดใช้แค่ไม่กี่บรรทัด:

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 as a service คืออะไร?

แพลตฟอร์มแบบจัดการที่ดูแลการเชื่อมต่อถาวรระหว่างแอปของคุณกับผู้ใช้ แทนที่จะรันเซิร์ฟเวอร์ WebSocket ของคุณเอง ไคลเอนต์ของคุณเชื่อมต่อกับบริการ แบ็กเอนด์ของคุณเผยแพร่ข้อความไปยังแชนเนลผ่าน SDK หรือ REST และบริการจะจัดการการส่ง การเชื่อมต่อใหม่ presence และประวัติให้เอง

Foony Realtime ต่างจาก Pusher หรือ Ably ยังไง?

มันครอบคลุมพื้นผิวหลักเดียวกันทั้งแชนเนล presence ประวัติ และการยืนยันตัวตนด้วยโทเคน และรองรับโปรโตคอล Pusher จึงใช้เป็นทางเลือกแทน Pusher แบบเสียบปลั๊กได้เลย ความต่างอยู่ที่ที่มาและราคา มันถูกสร้างขึ้นสำหรับ foony.com เว็บเกมมัลติเพลเยอร์ของเราเอง และแพ็กเกจฟรีรวม 9 ล้านข้อความต่อเดือน

ต้องเขียนแอปใหม่ทั้งหมดเพื่อสลับมาใช้ไหม?

ส่วนใหญ่ไม่ต้อง แอปที่ใช้ pusher-js และ Laravel Echo สามารถชี้มาที่ Foony Realtime ได้ด้วยการเปลี่ยนค่าคอนฟิก โปรเจกต์ใหม่ใช้ @foony/realtime SDK สำหรับ JavaScript และ TypeScript Go SDK หรือ REST API จากภาษาใดก็ได้

ราคาเท่าไหร่?

แพ็กเกจฟรีรวม 9 ล้านข้อความต่อเดือน แพ็กเกจแบบเสียเงินเพิ่มความจุรายเดือน และการใช้งานเกินแพ็กเกจจะคิดเงินต่อล้านข้อความ ดูตัวเลขปัจจุบันได้ที่ foony.io/pricing.

8 Ball Pool online multiplayer billiards icon