Різниця між веб-сокетами та довгими опитуваннями покрокового ігрового сервера


89

Я пишу сервер для гри на iOS. Гра покрокова, і єдиний раз, коли серверу потрібно передавати інформацію клієнту, - це повідомляти про хід суперника.

Мені цікаво, якщо хтось може прокоментувати ефективність та простоту впровадження відмінностей між використанням веб-сокетів та довгими опитуваннями. Крім того, якщо я використовував веб-сокети, чи повинен я використовувати його лише для отримання інформації та надсилання запитів POST для всього іншого, або весь зв’язок повинен здійснюватися через веб-сокет?

Крім того, чи є що додаткове для розгляду між веб-сокетами та довгими опитуваннями, якщо я зацікавлений у тому, щоб зробити веб-клієнт?


6
Ви також можете використовувати push-сповіщення, щоб сповіщати клієнта про нові дані. Я вважаю, що він є більш ефективним (з точки зору батареї), ніж два розглянуті рішення.
pteofil

1
як би це працювало, якби користувач все ще був у програмі?
кислий

4
Ви отримуєте сповіщення в додатку, коли отримуєте також push-повідомлення.
pteofil

Відповіді:


177

Що таке довге опитування?

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

  • Якщо сервер не має жодної інформації, доступної для клієнта, замість надсилання порожньої відповіді, сервер зберігає запит і чекає, коли буде доступна деяка інформація.
  • Як тільки інформація стає доступною (або після відповідного тайм-ауту), клієнту надсилається повна відповідь. Потім клієнт, як правило, негайно повторно запитує інформацію від сервера, так що сервер майже завжди матиме доступний запит очікування, який він може використовувати для доставки даних у відповідь на подію.

    У контексті Інтернету / AJAX тривале опитування також відоме як програмування Комети.

А як щодо Веб-розеток?

введіть тут опис зображення WebSockets забезпечують постійний зв’язок між клієнтом та сервером, який обидві сторони можуть використовувати для початку відправки даних у будь-який час.

  • Клієнт встановлює з'єднання WebSocket за допомогою процесу, відомого як рукостискання WebSocket. Цей процес починається з того, що клієнт надсилає на сервер звичайний запит HTTP.
  • Цей запит включає заголовок оновлення, який повідомляє серверу про те, що клієнт бажає встановити з'єднання WebSocket.

Висновок :

Якщо є потреба у спілкуванні в режимі реального часу, ви можете вибрати веб-розетки.

Але при довгому опитуванні:

Зв'язок між веб-клієнтом та веб-сервером залишається відкритим, так що коли сервер має нову інформацію, він може надсилати її клієнту. Потім цей запит закінчується. Потім між клієнтом і сервером робиться новий запит, а потім чекає чергового оновлення від сервера. Один і той же TCP-зв’язок, як правило, постійно відкривається під час декількох запитів через збереження HTTP / 1.1.

Посилання та інші міркування:

Тривале опитування PubNub проти розеток - час автономної роботи мобільного телефону

Що таке Long-Polling, Websockets, Server-Sent Events (SSE) та Comet?

тривалий опитування в цілі-С

Вступ до Websocket

Websocket проти довгого опитування

Використання веб-сокетів у програмах

Додаток Websocket

PushTechnology - Довге опитування

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.