WebSockets kesinlikle gelecek.
Uzun yoklama, AJAX gibi her istek için bağlantı oluşturmayı önlemek için kirli bir çözümdür - ancak WebSockets olmadığında uzun yoklama oluşturulmuştur. WebSockets sayesinde artık uzun yoklama gidiyor.
WebRTC eşler arası iletişime izin verir.
WebSockets öğrenmenizi öneririm .
karşılaştırma:
farklı iletişim tekniklerinin
AJAX - request
→ response
. Sunucuya bir bağlantı oluşturur, isteğe bağlı verilerle istek üstbilgileri gönderir, sunucudan bir yanıt alır ve bağlantıyı kapatır.
Tüm önemli tarayıcılarda desteklenir.
Uzun anket - request
→ wait
→ response
. AJAX'ın yaptığı gibi sunucuya bir bağlantı oluşturur, ancak canlı tutma bağlantısını bir süre açık tutar (uzun olmasa da). Bağlantı sırasında, açık istemci sunucudan veri alabilir. İstemci, bağlantı kapatıldıktan sonra, zaman aşımları veya veriler nedeniyle periyodik olarak yeniden bağlanmalıdır. Sunucu tarafında, AJAX ile aynı bir HTTP isteği gibi davranılır, ancak istek üzerine cevap uygulama mantığı tarafından tanımlanan şimdi veya gelecekte bir süre sonra gerçekleşir.
destek tablosu (tam) | wikipedia
WebSockets - client
↔ server
. Sunucuya bir TCP bağlantısı oluşturun ve gerektiği kadar açık tutun. Sunucu veya istemci bağlantıyı kolayca kapatabilir. İstemci HTTP uyumlu bir el sıkışma işleminden geçer. Başarılı olursa, sunucu ve istemci her zaman her iki yönde de veri alışverişi yapabilir. Uygulamanın her iki şekilde de sık sık veri alışverişi gerektirmesi etkilidir. WebSockets, istemciden sunucuya gönderilen her ileti için maskeleme içeren veri çerçevesine sahiptir, böylece veriler basitçe şifrelenir.
destek tablosu (çok iyi) | wikipedia
WebRTC - peer
↔ peer
. Ulaşım istemciler arasında iletişim kurmak için ve ulaşım-agnostik, böylece UDP, TCP veya daha soyut katmanları kullanabilirsiniz. Bu genellikle güvenilirliğin ikincil olduğu ve birkaç karenin veya kalite ilerlemesindeki azalmanın yanıt süresi ve en azından bir miktar veri aktarımı lehine feda edilebildiği video / ses akışı gibi yüksek hacimli veri aktarımı için kullanılır. Her iki taraf (eşler) verileri birbirinden bağımsız olarak itebilir. Herhangi bir merkezi sunucudan tamamen bağımsız olarak kullanılabilse de, çoğu durumda geliştiricilerin eşleri "bağlamak" için hala merkezi sunucuları kullandıkları endPoints verilerini alıp vermenin bir yolunu gerektirir. Bu sadece bir bağlantı kurmak için gerekli verileri değiştirmek için gereklidir, bundan sonra merkezi bir sunucu gerekli değildir.
destek tablosu (orta boy) | wikipedia
Sunucu Tarafından Gönderilen Etkinlikler - client
← server
. İstemci, sunucuya kalıcı ve uzun süreli bağlantı kurar. İstemciye yalnızca sunucu veri gönderebilir. İstemci sunucuya veri göndermek istiyorsa, bunun için başka bir teknolojinin / protokolün kullanılması gerekir. Bu protokol, HTTP uyumludur ve çoğu sunucu tarafı platformunda uygulanması kolaydır. Bu, Uzun Çağırma yerine kullanılacak tercih edilen bir protokoldür. destek tablosu (IE hariç iyi) | wikipedia
Avantajları:
WebSockets sunucu tarafının ana avantajı, bir HTTP isteği (el sıkışmasından sonra) değil, uygun bir mesaj tabanlı iletişim protokolü olmasıdır. Bu , yüksek performans ve mimari avantajlar elde etmenizi sağlar . Örneğin, node.js'de, farklı yuva bağlantıları için aynı belleği paylaşabilirsiniz, böylece her biri paylaşılan değişkenlere erişebilir. Bu nedenle, veritabanını ortada bir değişim noktası olarak kullanmanıza gerek yoktur (AJAX veya PHP gibi bir dilde Long Polling gibi). Verileri RAM'de saklayabilir veya hatta yuvalar arasında yeniden yayınlayabilirsiniz.
Güvenlik Hususları
İnsanlar genellikle WebSockets güvenliğinden endişe duyarlar. Gerçek şu ki, çok az fark yaratıyor veya WebSockets'i daha iyi bir seçenek haline getiriyor. Her şeyden önce, AJAX ile MITM şansı daha yüksektir , çünkü her istek internet altyapısı üzerinden geçen yeni bir TCP bağlantısıdır. WebSockets ile, bağlantı kurulduktan sonra, veriler istemciden sunucuya aktarıldığında ek olarak zorlanan çerçeve maskelemesinin yanı sıra veri incelemek için daha fazla çaba gerektiren ek sıkıştırma ile aralarında müdahale etmek çok daha zordur. Tüm modern protokoller hem HTTP'yi hem de HTTPS'yi (şifreli) destekler.
PS
WebSockets'in genellikle ağ için çok farklı bir mantık yaklaşımına sahip olduğunu , daha çok gerçek zamanlı oyunların hepsinde olduğu gibi, http gibi olmadığını unutmayın.