Perbedaan antara websockets dan long polling untuk server game berbasis giliran

90

Saya menulis server untuk game iOS. Permainan ini berbasis giliran dan satu-satunya saat server perlu mendorong informasi ke klien adalah untuk memberi tahu langkah lawan.

Saya ingin tahu apakah ada yang bisa mengomentari kinerja dan kemudahan implementasi perbedaan antara menggunakan websockets dan polling panjang. Juga, jika saya menggunakan websockets, haruskah saya hanya menggunakannya untuk menerima informasi dan mengirim permintaan POST untuk yang lainnya atau haruskah semua komunikasi melalui websocket?

Selain itu, apakah ada hal tambahan yang perlu dipertimbangkan antara websockets dan polling panjang jika saya tertarik juga untuk membuat klien web?

asam
sumber
6
Anda juga bisa menggunakan Push Notifications untuk memberi tahu klien tentang data baru. Saya yakin lebih efisien (dari segi baterai), daripada dua solusi yang Anda pertimbangkan.
pteofil
1
bagaimana cara kerjanya jika pengguna masih dalam aplikasi?
asam
4
Anda diberitahu di aplikasi ketika Anda menerima pemberitahuan push juga.
pteofil

Jawaban:

177

Apa itu Long Polling?

masukkan deskripsi gambar di sini Variasi dari teknik polling tradisional dan memungkinkan emulasi dorongan informasi dari server ke klien. Dengan polling yang lama, klien meminta informasi dari server dengan cara yang mirip dengan polling biasa.

  • Jika server tidak memiliki informasi yang tersedia untuk klien, alih-alih mengirimkan respons kosong, server menahan permintaan dan menunggu beberapa informasi tersedia.
  • Setelah informasi tersedia (atau setelah batas waktu yang sesuai), respons lengkap dikirim ke klien. Klien biasanya kemudian akan segera meminta kembali informasi dari server, sehingga server akan hampir selalu memiliki permintaan menunggu yang tersedia yang dapat digunakan untuk mengirimkan data sebagai respons terhadap suatu peristiwa.

    Dalam konteks web / AJAX, polling panjang juga dikenal sebagai pemrograman Comet.

Bagaimana dengan Websockets?

masukkan deskripsi gambar di sini WebSockets menyediakan koneksi persisten antara klien dan server yang dapat digunakan kedua belah pihak untuk mulai mengirim data kapan saja.

  • Klien membuat koneksi WebSocket melalui proses yang dikenal sebagai handshake WebSocket. Proses ini dimulai dengan klien mengirimkan permintaan HTTP biasa ke server.
  • Header Upgrade disertakan dalam permintaan ini yang menginformasikan server bahwa klien ingin membuat koneksi WebSocket.

Kesimpulan :

Jika ada kebutuhan komunikasi waktu nyata, Anda dapat memilih websockets dengan sangat baik.

Tapi di Long Polling:

Koneksi dibuat terbuka antara klien web dan server web sehingga ketika server memiliki informasi baru, ia dapat mendorongnya ke klien. Permintaan itu kemudian diselesaikan. Permintaan baru kemudian dibuat antara klien dan server dan kemudian menunggu pembaruan lain dari server. Koneksi TCP yang sama umumnya terbuka terus-menerus melalui beberapa permintaan karena keep-alives HTTP / 1.1.

Referensi dan pertimbangan lain:

Soket vs polling panjang PubNub - masa pakai baterai ponsel

Apa itu Long-Polling, Websockets, Server-Sent Events (SSE) dan Comet?

polling panjang di objektif-C

Pengenalan Websocket

Websocket Vs Long Polling

Menggunakan Websockets di Apps

Aplikasi Websocket

PushTechnology-Long Polling

Tharif
sumber