Pertanyaan kerugian dari websockets


Saya ingin tahu batasan apa yang ada dalam menggunakan websockets.

Websockets sangat ... kuat. Saya tidak bisa membayangkan bahwa itu tanpa kerugian.

Katakanlah, berapa jumlah pengguna yang dapat terhubung ke server secara bersamaan (jika saya membuat game dan pengguna akan terhubung ke game melalui WebSockets, apa yang akan membatasi jumlah pengguna yang dapat terhubung kapan saja?)

Juga benarkah dengan setiap koneksi tambahan, kualitas koneksi (kecepatan dan hal-hal seperti itu) akan berkurang?


32
2018-06-03 08:33


asal


Jawaban:


Keuntungan dan kerugian tentu saja akan tergantung pada kasus penggunaan tertentu, tetapi saya akan mencoba untuk menunjukkan beberapa perbedaan antara WebSocket dan HTTP.

WebSocket lebih kompleks daripada HTTP. Anda dapat membuat koneksi HTTP dengan klien telnet, tetapi Anda mungkin tidak dapat melakukan hal yang sama dengan WS. Bahkan jika Anda mengabaikan persyaratan handshake (yang termasuk penggunaan fungsi hash SHA1), Anda kemudian tidak akan dapat menutupi dan membingkai data dengan benar, dan server akan menutup koneksi.

Seperti kata Uwe, koneksi WebSocket dimaksudkan agar lebih persisten daripada koneksi HTTP. Jika Anda hanya ingin menerima pembaruan setiap 30 menit, Anda akan ingin menggunakan HTTP. Jika Anda ingin menerima pembaruan setiap detik, WebSocket mungkin menjadi opsi yang lebih baik, karena membuat koneksi HTTP membutuhkan banyak waktu.

Untuk membuat koneksi HTTP, pertama-tama Anda harus membuat koneksi TCP (SYN, SYN / ACK, ACK), kemudian mengirim permintaan GET dengan header yang cukup besar, kemudian akhirnya menerima respons server (bersama dengan tajuk besar lainnya).

Dengan WebSocket terbuka, Anda cukup menerima respons (tidak diperlukan permintaan), dan dilengkapi dengan header yang jauh lebih kecil: dari dua byte untuk frame kecil, hingga 10 byte untuk frame yang sangat besar (dalam kisaran gigabyte).

Anda perlu mempertimbangkan dua biaya (menjaga koneksi tetap terbuka vs membuat koneksi baru) untuk memutuskan di antara dua protokol.

Catatan: jawaban ini didasarkan pada draf protokol saat ini (draft-ietf-hybi-thewebsocketprotocol-09). WebSocket berevolusi dengan cepat, banyak penerapan masih berdasarkan draf yang lebih lama, dan beberapa detail dapat berubah sebelum diselesaikan.


34
2018-06-19 09:10



Dari apa yang saya baca, ini sepertinya berhubungan dengan HTTP Server Push yang saya baca itu biasanya tidak disarankan untuk digunakan karena itu menciptakan banyak koneksi di server.

Jika saya harus memilih, saya mungkin akan selalu mengembangkan mekanisme polling klien.


1
2018-06-11 12:36