WebSockets as a Service
แพลตฟอร์มเรียลไทม์แบบมีการจัดการที่อยู่เบื้องหลังแชทและข้อมูลสดของ foony.com เปิดให้นักพัฒนาทุกคนที่ foony.io
บริการ WebSocket จะเปิดการเชื่อมต่อค้างไว้ระหว่างเซิร์ฟเวอร์ของคุณกับไคลเอนต์ทุกตัวที่เชื่อมต่ออยู่ อัปเดตจึงมาถึงในทันทีที่เกิดขึ้นแทนที่จะรอรีเฟรชหน้าครั้งถัดไป Foony Realtime จัดการงานที่ยุ่งยากให้คุณ: การเชื่อมต่อ การเชื่อมต่อใหม่ การกระจายข้อความ พรีเซนซ์ และประวัติข้อความ ทั้งหมดอยู่หลัง SDK เล็กๆ ตัวเดียว
ลองเล่นสดๆ
ทุกอย่างด้านล่างนี้ทำงานกับบริการจริงที่ realtime.foony.io ในตอนนี้ ลองเปิดหน้านี้ในแท็บที่สองแล้วดูทั้งสองสะท้อนกันแบบเรียลไทม์
พรีเซนซ์และเคอร์เซอร์สด
ทุกคนที่กำลังอ่านหน้านี้จะปรากฏที่นี่ ตรงจากพรีเซนซ์ของแชนเนล ตำแหน่งเคอร์เซอร์ส่งผ่านเป็นข้อความชั่วคราว ระดับความหน่วงต่ำที่ข้ามการจัดเก็บไปเลย
แชทสด
นี่คือแชทจริงของหน้านี้ ห้อง @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
ดูมันทำงานจริงได้ในทุกเกมจาก เกมของเรา แล้วรับโครงสร้างพื้นฐานแบบเดียวกันพร้อมแดชบอร์ดและ SDK ได้ที่ foony.io

ลองใช้กับทราฟฟิกของคุณเอง
แพ็กเกจฟรีรวม 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.