WebSockets protokolü ile HTTP karşılaştırması


330

Websocket ve HTTP hakkında birçok blog ve tartışma var ve birçok geliştirici ve site websockets'i güçlü bir şekilde savunuyor, ancak hala nedenini anlayamıyorum.

örneğin (websocket severlerin argümanları):

HTML5 Web Sockets, web iletişiminin bir sonraki evrimini temsil eder - Web üzerinde tek bir soket üzerinden çalışan tam çift yönlü, çift yönlü bir iletişim kanalı. ( http://www.websocket.org/quantum.html )

HTTP akışı destekler: istek gövdesi akışını (büyük dosyaları yüklerken kullanıyorsunuz) ve yanıt gövdesi akışını.

WebSocket ile bağlantı yapılırken, sürekli yoklama yaptığınızda istemci ve sunucu her kare için 2 baytlık veri alışverişi yapar ve 8 kilo baytlık http başlığına karşılık gelir.

Neden bu 2 bayt tcp ve tcp protokollerinin altında ek yükü içermiyor?

GET /about.html HTTP/1.1
Host: example.org

Bu ~ 48 baytlık http başlığıdır.

http yığın kodlama - https://en.wikipedia.org/wiki/Chunked_transfer_encoding :

23
This is the data in the first chunk
1A
and this is the second one
3
con
8
sequence
0
  • Yani, her bir yığın için ek yük büyük değil.

Ayrıca her iki protokol de TCP üzerinden çalışır, bu nedenle uzun ömürlü bağlantılarla ilgili tüm TCP sorunları hala oradadır.

Sorular:

  1. Websockets protokolü neden daha iyi?
  2. Http protokolünü güncellemek yerine neden uygulandı?

2
Sorun nedir?
Jonas

@Jonas, 1) websockets protokolü neden daha iyi? 2) http protokolünü güncellemek yerine neden uygulandı? 3) Websockets neden bu kadar tanıtılıyor?
4esn0k

@JoachimPileborg, bunu masaüstü uygulamaları için TCP soketleri veya http ile de yapabilirsiniz; ve web sitesi için tarayıcıdan tarayıcıya iletişim kurmak için WebRTC kullanmalısınız
4esn0k

@JoachimPileborg, tarayıcıdan tarayıcıya webRTC, websockets değil
4esn0k

@ 4esn0k, WS daha iyi değil, belirli görevler için farklı ve daha iyi. 3) İnsanların Web'den haberdar olmaları ve yeni olasılıklar açmaları gereken yeni bir özellik
Jonas

Yanıtlar:


490

1) WebSockets protokolü neden daha iyi?

WebSockets, özellikle istemciden sunucuya iletilerin düşük gecikme süresi için düşük gecikmeli iletişim içeren durumlar için daha iyidir. Sunucudan istemciye veriler için, uzun süreli bağlantılar ve yığın aktarımı kullanarak oldukça düşük gecikme süresi elde edebilirsiniz. Ancak, bu her istemciden sunucuya ileti için yeni bir bağlantı kurulmasını gerektiren istemciden sunucuya gecikme süresine yardımcı olmaz.

48 baytlık HTTP el sıkışmanız, birçok başlık ve çerez verisi dahil olmak üzere, isteğin bir parçası olarak (her iki yönde) genellikle birkaç kilobayt veri gönderildiği gerçek dünyadaki HTTP tarayıcı bağlantıları için gerçekçi değildir. Chrome'u kullanmaya yönelik bir istek / yanıt örneği:

Örnek istek (çerez verileri dahil 2800 bayt, çerez verileri olmayan 490 bayt):

GET / HTTP/1.1
Host: www.cnn.com
Connection: keep-alive
Cache-Control: no-cache
Pragma: no-cache
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.68 Safari/537.17
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
Cookie: [[[2428 byte of cookie data]]]

Örnek yanıt (355 bayt):

HTTP/1.1 200 OK
Server: nginx
Date: Wed, 13 Feb 2013 18:56:27 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: CG=US:TX:Arlington; path=/
Last-Modified: Wed, 13 Feb 2013 18:55:22 GMT
Vary: Accept-Encoding
Cache-Control: max-age=60, private
Expires: Wed, 13 Feb 2013 18:56:54 GMT
Content-Encoding: gzip

Hem HTTP hem de WebSockets eşdeğer boyutlu ilk bağlantı tokalaşmalarına sahiptir, ancak WebSocket bağlantısıyla ilk tokalaşma bir kez gerçekleştirilir ve daha sonra küçük iletilerin yalnızca 6 bayt ek yükü vardır (başlık için 2 ve maske değeri için 4). Gecikme yükü başlıkların büyüklüğünden çok değil, mantıktan bu başlıkların ayrıştırılması / ele alınması / saklanmasıdır. Ayrıca, TCP bağlantı kurulum gecikmesi her istek için büyüklük veya işlem süresinden muhtemelen daha büyük bir faktördür.

2) HTTP protokolünü güncellemek yerine neden uygulandı?

SPDY , HTTP 2.0 ve QUIC gibi daha iyi performans ve daha düşük gecikme süresi sağlamak için HTTP protokolünü yeniden tasarlama çabaları vardır . Bu, normal HTTP isteklerinin durumunu iyileştirir, ancak WebSockets ve / veya WebRTC DataChannel'in istemciden sunucuya veri aktarımı için HTTP protokolünden daha düşük gecikme süresine sahip olması muhtemeldir (veya WebSockets'e çok benzeyen bir modda kullanılacaktır) neyse).

Güncelleme :

İşte web protokollerini düşünmek için bir çerçeve:

  • TCP : düşük seviyeli, çift yönlü, tam çift yönlü ve garantili sipariş taşıma katmanı. Tarayıcı desteği yok (eklenti / Flash hariç).
  • HTTP 1.0 : TCP üzerinde katmanlı istek-yanıt aktarım protokolü. İstemci bir tam istekte bulunur, sunucu bir tam yanıt verir ve ardından bağlantı kapatılır. İstek yöntemleri (GET, POST, HEAD) sunucudaki kaynaklar için belirli işlemsel anlamlara sahiptir.
  • HTTP 1.1 : HTTP 1.0'ın istek yanıtı niteliğini korur, ancak bağlantının birden çok tam istek / tam yanıt (her istek için bir yanıt) için açık kalmasına izin verir. İstekte ve yanıtta hala tam başlıklar var, ancak bağlantı yeniden kullanılıyor ve kapatılmıyor. HTTP 1.1 ayrıca belirli işlemsel anlamları olan bazı ek istek yöntemleri (OPTIONS, PUT, DELETE, TRACE, CONNECT) ekledi. Bununla birlikte, HTTP 2.0 taslak teklifinin girişinde belirtildiği gibi , HTTP 1.1 boru hattı yaygın olarak dağıtılmaz, bu nedenle tarayıcılar ve sunucular arasındaki gecikmeyi çözmek için HTTP 1.1'in kullanımını büyük ölçüde sınırlar.
  • Uzun anket : istemcinin isteğine hemen yanıt vermediği (veya yalnızca üstbilgilerle kısmen yanıt verdiği) HTTP'ye bir tür "hack" (1.0 veya 1.1). Bir sunucu yanıtından sonra istemci hemen yeni bir istek gönderir (HTTP 1.1 üzerinden aynı bağlantıyı kullanarak).
  • HTTP akışı : sunucunun tek bir istemci isteğine birden fazla yanıt göndermesine izin veren çeşitli teknikler (çok parçalı / yığınlanmış yanıt). W3C, bunu bir MIME türü kullanarak Sunucu tarafından Gönderilen Olaylar olarak standartlaştırmaktadır text/event-stream. Tarayıcı API'sine (WebSocket API'sine oldukça benzer) EventSource API adı verilir.
  • Kuyruklu yıldız / sunucu aktarımı: Bu, uzun anket ve HTTP akışını içeren bir şemsiye terimdir. Kuyruklu yıldız kütüphaneleri, çapraz tarayıcı ve çapraz sunucu desteğini en üst düzeye çıkarmak için genellikle birden fazla tekniği destekler.
  • WebSockets : HTTP dostu bir Yükseltme anlaşması kullanan bir aktarım katmanı yerleşik TCP. Akış aktarımı olan TCP'den farklı olarak, WebSockets mesaj tabanlı bir aktarımdır: mesajlar kabloda sınırlandırılır ve uygulamaya teslim edilmeden önce tam olarak yeniden birleştirilir. WebSocket bağlantıları iki yönlü, tam çift yönlü ve uzun ömürlüdür. İlk el sıkışma isteği / yanıtından sonra, işlemsel semantik yoktur ve mesaj başına yükü çok azdır. İstemci ve sunucu istediği zaman ileti gönderebilir ve ileti makbuzunu eşzamansız olarak işlemelidir.
  • SPDY : Google, HTTP'yi daha verimli bir tel protokolü kullanarak genişletmek, ancak tüm HTTP anlambilimini (istek / yanıt, çerezler, kodlama) korumak için başlattı. SPDY yeni bir çerçeveleme biçimi (uzunluk ön ekli çerçevelerle) sunar ve HTTP istek / yanıt çiftlerini yeni çerçeveleme katmanına katmanlamanın bir yolunu belirler. Bağlantılar kurulduktan sonra başlıklar sıkıştırılabilir ve yeni başlıklar gönderilebilir. Tarayıcılarda ve sunucularda SPDY'nin gerçek dünya uygulamaları vardır.
  • HTTP 2.0 : SPDY ile benzer hedeflere sahiptir: HTTP anlambilimini korurken HTTP gecikmesini ve ek yükü azaltın. Mevcut taslak, SPDY'den türetilmiştir ve bir el sıkışma ve el sıkışma ve çerçeveleme için WebSocket standardına çok benzeyen bir yükseltme anlaşması ve veri çerçevesi tanımlar. Alternatif bir HTTP 2.0 taslak teklifi (httpbis-speed-mobility) aslında taşıma katmanı için WebSockets kullanır ve SPDY çoğullama ve HTTP eşlemesini WebSocket uzantısı olarak ekler (el sıkışma sırasında WebSocket uzantıları üzerinde anlaşılır).
  • WebRTC / CU-WebRTC : tarayıcılar arasında eşler arası bağlantıya izin veren öneriler. Altta yatan aktarım TCP yerine SDP / datagram olduğundan, bu daha düşük ortalama ve maksimum gecikme iletişimini etkinleştirebilir. Bu, sonraki tüm paketlerin teslimini geciktiren (sipariş dışı teslimatı garanti etmek için) bırakılan paketlerin neden olduğu gecikme ani artışlarının TCP sorununu önleyen paketlerin / mesajların sipariş dışı teslim edilmesine izin verir.
  • QUIC : TCP'ye göre web gecikmesini azaltmayı amaçlayan deneysel bir protokoldür. Yüzeyde QUIC, UDP'de uygulanan TCP + TLS + SPDY'ye çok benzer. QUIC, HTTP / 2'ye eşdeğer çoğullama ve akış kontrolü, TLS'ye eşdeğer güvenlik ve TCP'ye bağlantı semantiği, güvenilirlik ve tıkanıklık kontrolü eşdeğeri sağlar. TCP işletim sistemi çekirdeklerine ve orta kutu ürün yazılımına uygulandığından, TCP'de önemli değişiklikler yapmak imkansızdır. Bununla birlikte, QUIC UDP'nin üzerine kurulduğundan, böyle bir sınırlama yaşamamaktadır. QUIC, HTTP / 2 anlambilimi için tasarlanmış ve optimize edilmiştir.

Kaynaklar :


1
Ancak bu, istemciden sunucuya gecikme konusunda yardımcı olmaz ve bu da her istemciden sunucuya ileti için yeni bir bağlantı kurulmasını gerektirir. - yanıt gövdesinin akışına ne dersiniz? biliyorum, XMLHttpRequest API buna izin vermiyor, ama var. sunucuya akış ile istemci tarafından akış yapabilirsiniz.
4esn0k

8
@Philipp, yine de ayrıntılı bir şekilde araştırma ve dokümantasyon yapmak istediğimi sordu. WebSockets vs diğer HTTP tabanlı mekanizma sorunu oldukça sık ortaya çıkıyor, ancak şimdi bağlantı vermek için iyi bir referans var. Ama evet, muhtemelen WebSockets vs HTTP hakkında önceden düşünülmüş bir görüşü yedeklemek için kanıt arıyor gibi görünüyor, çünkü özellikle bir cevap seçmediği veya ödül vermediği için.
kanaka

9
Protokollere bu çok güzel ve hassas bir bakış için çok teşekkür ederim.
Martin Meeser

2
@WardC caniuse.com tarayıcı uyumluluk bilgilerini (mobil dahil) verir.
kanaka

3
@ www139, hayır, WebSocket protokol düzeyinde bağlantı bir taraf veya diğer taraf bağlantıyı kapatana kadar açık kalır. Ayrıca TCP zaman aşımları (herhangi bir TCP tabanlı protokolle ilgili bir sorun) hakkında endişelenmeniz gerekebilir, ancak her dakika veya iki dakikada bir her türlü trafik bağlantıyı açık tutacaktır. Aslında, WebSocket protokol tanımı bir ping / pong çerçeve türünü belirtir, ancak bu olmadan bile tek bir bayt (artı iki bayt başlığı) gönderebilirsiniz ve bu bağlantıyı açık tutar. Her iki dakikada bir 2-3 bayt önemli bir bant genişliği etkisi değildir.
kanaka

130

WebSocket'in HTTP'nin yerini aldığını varsayıyorsunuz. O değil. Bu bir uzantı.

WebSockets ana kullanım durumu, web tarayıcısında çalışan ve bir sunucudan gerçek zamanlı veri alan Javascript uygulamalarıdır. Oyunlar iyi bir örnektir.

WebSockets'ten önce, Javascript uygulamalarının bir sunucuyla etkileşim kurması için tek yöntem kullanılıyordu XmlHttpRequest. Ancak bunların büyük bir dezavantajı vardır: İstemci açıkça istemedikçe sunucu veri gönderemez.

Ancak yeni WebSocket özelliği, sunucunun istediği zaman veri göndermesini sağlar. Bu, tarayıcı tabanlı oyunların çok daha düşük bir gecikmeyle ve AJAX uzun sorgulama veya tarayıcı eklentileri gibi çirkin hack'leri kullanmak zorunda kalmadan uygulanmasına izin verir.

Neden normal HTTP'yi akış istekleri ve yanıtları ile kullanmıyorsunuz?

Başka bir yanıta yapılan yorumda, yalnızca istemci isteğini ve yanıt gövdesini eşzamansız olarak yayınlamanızı önerdiniz.

Aslında, WebSockets temelde budur. İstemciden bir WebSocket bağlantısı açma girişimi ilk başta bir HTTP isteği gibi görünür, ancak üstbilgideki özel bir yönerge (Yükseltme: websocket) sunucuya bu eşzamansız modda iletişim kurmaya başlamasını söyler. WebSocket protokolünün ilk taslakları bundan daha fazla değildi ve sunucunun istemcinin eşzamansız olarak iletişim kurmak istediğini gerçekten anladığından emin olmak için bazı el sıkışmalar değildi. Ancak daha sonra, HTTP'nin olağan istek / yanıt modeline alışkın oldukları için proxy sunucularının bununla karıştırılacağı anlaşıldı. Bir potansiyel saldırı senaryosu proxy sunucular karşı keşfedildi. Bunu önlemek için WebSocket trafiğinin normal HTTP trafiğinden farklı görünmesi gerekiyordu. Bu yüzden maskeleme anahtarları tanıtıldıprotokolün son sürümü .


>> İstemci istemediği sürece sunucu veri gönderemez .; Web tarayıcısı WebSockets bağlantısını başlatmalıdır ... XMLHttpRequest için olduğu gibi
4esn0k

18
@ 4esn0k Tarayıcı bir websocket bağlantısı başlatır. Ancak kurulduktan sonra, her iki taraf da istedikleri zaman veri gönderebilir. XmlHttpRequest için durum böyle değil.
Philipp

1
Neden HTTP ile bu mümkün değil?
4esn0k

4
@Philipp, oyunlar WebSockets'in parladığı iyi bir örnektir. Ancak, en büyük kazancı elde ettiğiniz sunucudan gerçek zamanlı veriler değildir. HTTP akışı / uzun süreli bağlantıları kullanarak neredeyse sunucu-> istemci gecikmesi elde edebilirsiniz. Ve uzun süredir devam eden istekler ile, sunucular istedikleri zaman verileri etkili bir şekilde gönderebilir, çünkü istemci isteği zaten göndermiştir ve sunucu veri olana kadar "isteği tutar". WebSockets için en büyük kazanç, istemci-> sunucu gecikmesi (ve dolayısıyla gidiş-dönüş) ile olur. İstemci istediği zaman yükü talep etmeden gönderebilmek gerçek anahtardır.
kanaka

1
@Philipp, başka bir not: XMLHttpRequest ve JavaScript için WebSockets uygulamasına ek olarak gizli iframe'ler ve uzun anket komut dosyası etiketleri de dahil olmak üzere JavaScript'in sunucuyla etkileşim kurması için başka yöntemler de vardır. Daha fazla ayrıntı için Comet wikipedia sayfasına bakınız: en.wikipedia.org/wiki/Comet_(programming)
kanaka

27

Düzenli bir REST API'si HTTP'yi iletişim için temel protokol olarak kullanır, bu da istek ve yanıt paradigmasını izler, yani iletişim, bir sunucudan bazı veri veya kaynak talep eden istemciyi ve sunucunun bu istemciye yanıt vermesini içerir. Ancak, HTTP durum bilgisi olmayan bir protokoldür, bu nedenle her istek-yanıt döngüsü başlık ve meta veri bilgilerini tekrarlamak zorunda kalacaktır. Bu, sık sık tekrarlanan istek-yanıt döngüleri durumunda ek gecikmelere neden olur.

http

WebSockets ile iletişim yine de ilk HTTP el sıkışma olarak başlasa da, WebSockets protokolünü takip etmek için daha da yükseltilir (yani hem sunucu hem de istemci, tüm varlıklar WebSockets protokolünü desteklemediğinden protokolle uyumluysa).

Artık WebSockets ile istemci ve sunucu arasında tam bir dupleks ve kalıcı bağlantı kurmak mümkündür. Bu, bir istek ve yanıttan farklı olarak, uygulamanın çalıştığı sürece bağlantının açık kaldığı (yani kalıcı olduğu) ve tam çift yönlü olduğu için iki yönlü eşzamanlı iletişimin mümkün olduğu anlamına gelir, yani artık sunucu başlatılabilir yeni veriler (müşterinin ilgilendiği) kullanılabilir olduğunda bir iletişim ve bazı verileri istemciye 'iletir'.

WebSockets

WebSockets protokolü durum bilgisi içerir ve sunucu güncellemesi olmadan yeni güncellemeler alabileceğiniz gerçek zamanlı teknolojilerde kullanılan birincil kavram olan Yayınla-Abone Ol (veya Pub / Sub) mesajlaşma desenini uygulamanızı sağlar tekrar tekrar istemek (sayfayı yenilemek) istemcisi. Bu tür uygulamalara örnek olarak Uber otomobilinin konum takibi, Anlık Bildirimler, Gerçek zamanlı borsa fiyatları, sohbet, çok oyunculu oyunlar, canlı çevrimiçi işbirliği araçları vb. Verilebilir.

Bu protokolün geçmişini, nasıl oluştuğunu, ne için kullanıldığını ve bunu nasıl uygulayabileceğinizi açıklayan Websockets hakkındaki derin bir dalış makalesine göz atabilirsiniz.

WebSockets ve normal REST API'lerini kullanmaktan nasıl farklı oldukları hakkında yaptığım bir sunumdan bir video: Standartlaştırma ve veri akışındaki üstel artışı kullanma


24

TL; DR için, sorularınız için 2 sent ve daha basit bir sürüm:

  1. WebSockets, HTTP üzerinden şu avantajları sağlar:

    • Bağlantı süresi boyunca kalıcı durum bilgisi olan bağlantı
    • Düşük gecikme süresi: HTTP'nin gerektirdiği gibi her istek için bağlantıların yeniden kurulmasına gerek olmadığından sunucu / istemci arasında neredeyse gerçek zamanlı iletişim.
    • Tam çift yönlü: hem sunucu hem de istemci aynı anda gönderebilir / alabilir
  2. WebSocket ve HTTP protokolü farklı sorunları çözmek için tasarlandı, IE WebSocket iki yönlü iletişimi geliştirmek için tasarlanırken HTTP durumsuz, istek / yanıt modeli kullanılarak dağıtılacak şekilde tasarlanmıştır. Eski nedenlerle (güvenlik duvarı / proxy penetrasyonu) bağlantı noktalarını paylaşmak dışında, bunları tek bir protokolde birleştirmek için ortak bir zemin yoktur.


3
Karşılaştırmada durum bilgisi olan ve vatansız terimini belirtmeniz önemlidir (Y)
Utsav T

15

Websockets protokolü neden daha iyi?

Onları kim daha iyi gibi yan yana karşılaştırabileceğimizi sanmıyorum. Bu sadece iki farklı sorunu çözdükleri için adil bir karşılaştırma olmayacak . Onların gereksinimleri farklı. Elmaları portakallarla karşılaştırmak gibi olacak. Onlar farklı.

HTTP bir istek yanıt protokolüdür. İstemci (tarayıcı) bir şey istiyor, sunucu veriyor. Yani. İstemci istediği veri büyükse, sunucu istenmeyen arabellek sorunlarını geçersiz kılmak için akış verileri gönderebilir. Burada ana gereksinim veya sorun, istemcilerden nasıl istekte bulunulacağı ve istedikleri kaynaklara (hybertext) nasıl yanıt verileceğidir. Burada HTTP parlıyor.

HTTP'de yalnızca istemci isteği. Sunucu yalnızca yanıt verir.

WebSocket , yalnızca istemcinin isteyebileceği bir istek yanıtlama protokolü değildir. Bir sokettir (TCP soketine çok benzer). Bağlantı açıldığında, her iki taraf da alt çizgi TCP bağlantısı kapatılana kadar veri gönderebilir. Tıpkı normal bir soket gibi. TCP soketi ile tek fark websocket web'de kullanılabilir olmasıdır. Web'de normal bir soket için çok kısıtlamamız var. Çoğu güvenlik duvarı, HTTP'nin kullandığı 80 ve 433 dışındaki bağlantı noktalarını engeller. Proxy'ler ve aracılar da sorunlu olacaktır.Bu nedenle protokolün mevcut altyapılara konuşlandırılmasını daha kolay hale getirmek için websocket yükseltmek için HTTP el sıkışma kullanır. Bu, bağlantı ilk kez açıldığında, sunucuya "HTTP isteği değil, lütfen websocket protokolüne yükseltin" diyerek sunucuya HTTP isteği gönderdi.

Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13

Sunucu isteği anladığında ve websocket protokolüne yükseltildikten sonra, HTTP protokollerinden hiçbiri uygulanmadı.

Yani cevabım hiçbiri birbirinden daha iyi değil. Tamamen farklılar.

Http protokolünü güncellemek yerine neden uygulandı?

HTTP adı altında her şeyi yapabiliriz . Ama yapalım mı? Eğer iki farklı şeyse, iki farklı isim tercih edeceğim. Hickson ve Michael Carter da öyle .


6

Diğer cevaplar burada önemli bir noktaya değinmiyor gibi görünüyor ve bu da bir web tarayıcısını istemci olarak desteklemeyi gerektirdiğinden bahsetmiyorsunuz. Yukarıdaki düz HTTP sınırlamalarının çoğu, tarayıcı / JS uygulamalarıyla çalışacağınızı varsaymaktadır.

HTTP protokolü tam çift yönlü iletişim yeteneğine sahiptir; bir istemcinin yığın kodlama aktarımı ile bir POST gerçekleştirmesi ve bir sunucunun yığın kodlama gövdesi ile bir yanıt döndürmesi yasaldır. Bu işlem başlığın tam başlangıcında kaldırılmasını sağlar.

Yani, aradığınız tek şey tam çift yönlü ise, hem istemci hem de sunucuyu kontrol ediyorsanız ve web soketlerinin ekstra çerçeveleme / özellikleriyle ilgilenmiyorsanız, HTTP'nin daha düşük gecikme / CPU ile daha basit bir yaklaşım olduğunu iddia ediyorum (gecikme olmasına rağmen) gerçekten sadece mikrosaniye veya daha az farklılık gösterir).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.