WebSocket

WebSocket Bilgi
Fonksiyon Web tarayıcıları için bir TCP bağlantısı üzerinden çift yönlü iletişim
Kısaltma ws
Oluşturulma tarihi 2011
Liman 80 ve 443
RFC 6455

WebSocket , web tarayıcıları için bir TCP bağlantısı üzerinden tam çift yönlü iletişim kanalları oluşturmak için uygulama katmanının bir ağ protokolünü ve World Wide Web'in bir programlama arayüzünü belirleyen bir Web standardıdır . Protokol tarafından standardize edilmiştir IETF içinde RFC  2011 yılında 6455 ve programlama arayüzünün W3C .

Genel İlkeler

WebSocket protokolü, tarayıcılar ve web sunucuları için bir TCP soketinde iki yönlü (veya " tam çift yönlü ") bir iletişim kanalı açmak için kullanılır . Daha spesifik olarak, bu nedenle şunları sağlar:

İki yönlü web iletişimi ihtiyacı, istemci / sunucu

Tarayıcı performansındaki gelişmeyi takiben web uygulamalarının artan etkileşimi, istemci web uygulaması ile sunucu süreçleri arasında iki yönlü iletişim tekniklerinin hızla geliştirilmesini gerekli kılmıştır. İstemcinin XMLHttpRequest nesnesi aracılığıyla istek çağrısına ve istemciye daha sonra yanıt vermek üzere sunucu tarafından depolanan uzun TTL türüne sahip HTTP isteklerine dayanan teknikler, bu eksikliğin üstesinden gelmeyi mümkün kılmış ve başarılı Ajax mimarileri tarafından popüler hale getirilmiştir. .

Bilgisayar bilimcisi Stéphane Bortzmeyer'e göre , "WebSocket bu nedenle uygulamalara TCP ile hemen hemen aynı hizmeti sunuyor" , ancak çağdaş Web haline gelen "ormanda" ağ akışlarının ( güvenlik duvarları vb.) Önündeki birçok aracı engeli aşma avantajına sahiptir. . Yeni bir aktarım protokolü oluşturmak için çok az filtreleme olan HTTP mimarisini (röle, kimlik doğrulama, bağlantı noktaları 80 ve 443) kullanarak, Websocket'in yaratıcıları artık TCP aracılığıyla garanti edilmeyen iki yönlü bir ağ iletişimi sağlamayı amaçlamaktadır. Websocket'in temel sınırlaması, genel bir protokol olmamasıdır: iletişim, mutlaka istemcinin web tarayıcısı veya belirli özel kütüphaneler aracılığıyla yapılmalıdır ( "Uygulamalar" bölümüne bakın ).

WebSocket API

WebSocket programlama arayüzü WHATWG içinde geliştirilmiştir .

Tartışmalar

Ağ mimarisi

WebSocket'in ilkesi, uygulama katmanının üzerinde yeni bir protokol oluşturmaktan ziyade ağ katmanında bulunan filtreleme sorunlarını çözmenin tartışmasız daha iyi olduğu gerçeği adına, geliştirme sırasında spesifikasyon organları içinde itiraz edildi.

güvenlik

Websocket'in önceki sürümlerinin API'sinde bir güvenlik açığı keşfedildi. El sıkışma aşamasında  bir JavaScript dosyasını kötü amaçlı yazılımla değiştirerek göz atma sırasında güvenlik ihlal edildi  . Bu kusur API'nin kendisinde olduğu için tarayıcıdaki herhangi bir yama ile düzeltilemedi. Firefox 4 ve 5, Opera 11 ve Internet Explorer 9 gibi tarayıcıların bazı sürümlerinde, WebSocket bu kusur nedeniyle devre dışı bırakılmıştır.
Firefox'taki güvenlik açığı Firefox 6'dan (Gecko 6.0 motoru) düzeltildi.
Internet Explorer, websocket'i IE10 ile uygulamıştır.
Opera'da web soketini yeniden etkinleştirmek her zaman mümkündü. Opera 12'den websocket etkinleştirilir.

Uygulamalar

Tarayıcılar

Özellikler Krom Firefox (Gecko) Internet Explorer Opera Safari
Sürüm -76 desteği 6 4.0 (2.0) Destek yok 11.00 (devre dışı) 5.0.1
Protokol sürüm 7 desteği Destek yok 6.0 Destek yok Destek yok Destek yok
Protokol sürüm 10 desteği 14 7.0 HTML5 Laboratuvarları ? ?
Standart - RFC 6455 Desteği 16 11.0 10 12.10 6

Yazılım Kitaplıkları

Java VS C ++
  • QtWebsocket bölgesi WebSocket protokolünün bir istemci ve sunucu uygulaması C ++ (gerektirir QT çerçeve );
Python PHP
  • İngiliz anahtarı (eski adıyla php-websocket ), sunucu tarafında PHP uygulaması ve istemci tarafında PHP / HTML5;
Javascript
  • ScaleDrone , REST, Node.js , PHP , Ruby için protokolün javascript uygulaması  ;
  • Socket.io , Node.js için protokolün javascript uygulaması  ;
Diğer
  • APE Projesi , WebSocket protokol desteği (-hixie-75, -hixie-76, -hybi-ietf-06, -hybi-ietf-07);
  • PubNub , mobil, web ve IoT teknolojileri tarafından kullanılan tüm dillerle uyumlu bir API sunan uygulama, ücretsiz veya ücretli hizmet;
  • İtici , çoğu dille uyumlu API uygulaması;
  • SignalR için uygulama ASP.NET içinde C #  ;
  • Basit Bileşenler , Gnoga çerçevesi tarafından kullanılan Ada'da uygulama
  • Protocol :: WebSocket , protokolün Perl uygulaması;
  • Websocketd , bir websocket sunucusunu başlatmak için herhangi bir ortak dilde yazılmış bir programı kullanmanıza olanak tanıyan bir yürütülebilir dosya.

Notlar ve referanslar

  1. (in) "  WebSocket Protokolü  " üzerine tools.ietf.org (erişilen 2017 17 Nisan )
  2. (in) "  WebSocket Protokolü  ," Yorumlar için Request n o  6455Aralık 2011.
  3. https://www.w3.org/TR/websockets/
  4. Stéphane Bortzmeyer, "  RFC 6455: WebSocket protokolü  " , www.bortzmeyer.org adresinde ,11 Aralık 2011( 12 Nisan 2021'de erişildi )
  5. (içinde) WebSocket API'nin yeni HTML5 standardıyla birlikte geliştirildiği yeni web platformu .
  6. "  [hybi] Yükseltme ve BAĞLANTI tokalaşmalarını karşılaştıran deney  " , www.ietf.org adresinde ( 17 Nisan 2017'de erişildi )
  7. “  WebSockets  ” , Mozilla Developer Network'te ( 17 Nisan 2017'de erişildi )
  8. "  WebSocket API (Windows)  " de msdn.microsoft.com (erişilen Nisan 17, 2017 )
  9. (in) David Honneffer, Dokümantasyon Uzmanı , "  Opera Software: Opera Presto 2.12 API Desteği  " üzerine www.opera.com (erişilen 2017 17 Nisan )
  10. (inç) Project jWebSocket , Genel Kamu Lisansı GNU Lesser altında dağıtılan özgür yazılım .
  11. (in) "  libwebsockets  " üzerine libwebsockets.org
  12. (tr) Projesi apache-WebSocket , yazılım ücretsiz altında Apache 2.0 .
  13. (in) Project pywebsocket , değiştirilmiş BSD lisansı altında ücretsiz yazılım .
  14. (inç) Proje Anahtarı , WTFPL altında dağıtılan ücretsiz yazılım .
  15. (in) EPA Projesi , Free Software altında yayınlanan GNU Genel Kamu Lisansı .
  16. Ada için (inç) Tek Bileşenler
  17. (tr) Gnoga

Ayrıca görün

İlgili Makaleler

Dış bağlantılar