ความแตกต่างระหว่าง websockets และการสำรวจระยะยาวสำหรับเซิร์ฟเวอร์เกมแบบเทิร์นเบส


93

ฉันกำลังเขียนเซิร์ฟเวอร์สำหรับเกม iOS เกมจะเปิดตามและครั้งเดียวที่เซิร์ฟเวอร์ต้องการส่งข้อมูลไปยังไคลเอนต์คือการแจ้งการเคลื่อนไหวของฝ่ายตรงข้าม

ฉันอยากรู้ว่ามีใครสามารถแสดงความคิดเห็นเกี่ยวกับประสิทธิภาพและความสะดวกในการใช้งานที่แตกต่างระหว่างการใช้ websockets และการสำรวจความคิดเห็นแบบยาว นอกจากนี้หากฉันใช้เว็บซ็อกเก็ตฉันควรใช้เพื่อรับข้อมูลและส่งคำขอ POST สำหรับสิ่งอื่น ๆ เท่านั้นหรือการสื่อสารทั้งหมดควรผ่าน websocket?

นอกจากนี้มีอะไรเพิ่มเติมที่ต้องพิจารณาระหว่าง websockets และการสำรวจระยะยาวหากฉันสนใจที่จะสร้างเว็บไคลเอ็นต์ด้วย


6
คุณยังสามารถใช้การแจ้งเตือนแบบพุชเพื่อแจ้งให้ลูกค้าทราบถึงข้อมูลใหม่ ฉันเชื่อว่าจะมีประสิทธิภาพมากกว่า (แบตเตอรี่อย่างชาญฉลาด) มากกว่าโซลูชันทั้งสองของคุณที่พิจารณา
pteofil

1
จะทำงานอย่างไรหากผู้ใช้ยังอยู่ในแอป
เป็นกรด

4
คุณจะได้รับแจ้งในแอพเมื่อคุณได้รับการแจ้งเตือนแบบพุชด้วย
pteofil

คำตอบ:


180

Long Polling คืออะไร?

ป้อนคำอธิบายภาพที่นี่ รูปแบบของเทคนิคการสำรวจความคิดเห็นแบบดั้งเดิมและอนุญาตให้จำลองการส่งข้อมูลจากเซิร์ฟเวอร์ไปยังไคลเอนต์ ด้วยการสำรวจความคิดเห็นแบบยาวไคลเอนต์จะร้องขอข้อมูลจากเซิร์ฟเวอร์ในลักษณะเดียวกับการสำรวจความคิดเห็นปกติ

  • หากเซิร์ฟเวอร์ไม่มีข้อมูลใด ๆ สำหรับไคลเอ็นต์แทนที่จะส่งการตอบกลับที่ว่างเปล่าเซิร์ฟเวอร์จะเก็บคำขอและรอให้มีข้อมูลบางอย่าง
  • เมื่อข้อมูลพร้อมใช้งาน (หรือหลังจากหมดเวลาที่เหมาะสม) การตอบกลับทั้งหมดจะถูกส่งไปยังไคลเอนต์ โดยปกติไคลเอนต์จะร้องขอข้อมูลอีกครั้งจากเซิร์ฟเวอร์ทันทีดังนั้นเซิร์ฟเวอร์เกือบตลอดเวลาจะมีคำขอรอที่พร้อมใช้งานซึ่งสามารถใช้เพื่อส่งข้อมูลเพื่อตอบสนองต่อเหตุการณ์ได้

    ในบริบทของเว็บ / AJAX การสำรวจแบบยาวเรียกอีกอย่างว่าการเขียนโปรแกรมดาวหาง

แล้ว Websockets ล่ะ?

ป้อนคำอธิบายภาพที่นี่ WebSockets ให้การเชื่อมต่อแบบต่อเนื่องระหว่างไคลเอนต์และเซิร์ฟเวอร์ที่ทั้งสองฝ่ายสามารถใช้เพื่อเริ่มส่งข้อมูลได้ตลอดเวลา

  • ไคลเอนต์สร้างการเชื่อมต่อ WebSocket ผ่านกระบวนการที่เรียกว่า WebSocket handshake กระบวนการนี้เริ่มต้นด้วยไคลเอนต์ส่งคำขอ HTTP ปกติไปยังเซิร์ฟเวอร์
  • ส่วนหัวของการอัพเกรดรวมอยู่ในคำร้องขอนี้ซึ่งแจ้งเซิร์ฟเวอร์ว่าไคลเอนต์ต้องการสร้างการเชื่อมต่อ WebSocket

สรุป :

หากจำเป็นต้องมีการสื่อสารแบบเรียลไทม์คุณสามารถเลือกใช้ websockets ได้เป็นอย่างดี

แต่ใน Long Polling:

การเชื่อมต่อจะเปิดขึ้นระหว่างเว็บไคลเอ็นต์และเว็บเซิร์ฟเวอร์เพื่อให้เมื่อเซิร์ฟเวอร์มีข้อมูลใหม่ก็สามารถส่งไปยังไคลเอนต์ได้ คำขอนั้นจะเสร็จสิ้น จากนั้นจะมีการร้องขอใหม่ระหว่างไคลเอนต์และเซิร์ฟเวอร์จากนั้นรอการอัปเดตอื่นจากเซิร์ฟเวอร์ โดยทั่วไปการเชื่อมต่อ TCP เดียวกันจะเปิดอย่างต่อเนื่องตลอดการร้องขอหลายครั้งเนื่องจาก HTTP / 1.1 keep-alives

การอ้างอิงและการพิจารณาอื่น ๆ :

PubNub Long Polling vs Sockets - อายุการใช้งานแบตเตอรี่มือถือ

Long-Polling, Websockets, Server-Sent Events (SSE) และ Comet คืออะไร?

การสำรวจระยะยาวในวัตถุประสงค์ -C

แนะนำ Websocket

Websocket Vs Long Polling

การใช้ Websockets ในแอพ

แอปพลิเคชัน Websocket

PushTechnology-Long Polling

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.