Funcţie | Comunicare bidirecțională printr-o conexiune TCP pentru browsere web |
---|---|
Acronim | ws |
Data crearii | 2011 |
Port | 80 și 443 |
RFC | 6455 |
WebSocket este un standard Web care desemnează un protocol de rețea al stratului de aplicație și o interfață de programare a World Wide Web pentru a crea canale de comunicare full-duplex printr-o conexiune TCP pentru browserele web. Protocolul a fost standardizat de IETF în RFC 6455 în 2011 și interfața de programare de către W3C .
Protocolul WebSocket este utilizat pentru a deschide un canal de comunicație bidirecțional (sau " full-duplex ") pe o priză TCP pentru browsere și servere web . Mai precis, prin urmare, permite:
Interactivitatea crescândă a aplicațiilor web, ca urmare a îmbunătățirii performanței browserului, a făcut rapid necesară dezvoltarea tehnicilor de comunicare bidirecțională între aplicația web client și procesele serverului. Tehnicile bazate pe solicitarea apelului de către client prin intermediul obiectului XMLHttpRequest și utilizarea cererilor HTTP cu un tip TTL lung stocat de server pentru un răspuns ulterior către client au făcut posibilă depășirea acestei lipse și au fost popularizate de succesul arhitecturilor Ajax .
Potrivit informaticienului Stéphane Bortzmeyer , "WebSocket oferă, prin urmare, practic același serviciu aplicațiilor ca TCP" , dar are avantajul de a ocoli numeroasele obstacole intermediare în calea fluxurilor de rețea ( firewall-uri etc.) în "jungla" care a devenit web-ul contemporan . Folosind arhitectura HTTP (releu, autentificare, porturile 80 și 443), foarte puțină filtrare, pentru a crea un nou protocol de transport, creatorii Websocket își propun să asigure o comunicație de rețea bidirecțională care nu mai era garantată prin TCP. Principala limitare a Websocket este că nu este un protocol general: comunicarea trebuie să se facă în mod necesar prin intermediul browserului web al clientului sau prin anumite biblioteci dedicate (vezi secțiunea „Implementări” ).
Interfața de programare WebSocket a fost dezvoltată în cadrul WHATWG .
Însăși principiul WebSocket a fost contestat în cadrul organismelor de specificații în timpul dezvoltării sale, în numele faptului că a fost, probabil, mai bine să se rezolve problemele de filtrare găsite în stratul de rețea, mai degrabă decât să se creeze un nou protocol deasupra acestuia.
Un defect de securitate a fost descoperit în API-ul versiunilor timpurii ale websocket-ului. Securitatea a fost compromisă atunci când navigați prin înlocuirea unui fișier JavaScript cu malware în faza de strângere de mână . Deoarece acest defect se află în API-ul în sine, nu a putut fi corectat de niciun patch din browser. În unele versiuni de browsere precum Firefox 4 și 5, Opera 11 și Internet Explorer 9, WebSocket a fost dezactivat din cauza acestui defect.
Defectul de securitate din Firefox a fost corectat din Firefox 6 (motor Gecko 6.0).
Internet Explorer a implementat websocket-ul cu IE10.
Pe Opera, a fost întotdeauna posibilă reactivarea websocket-ului. Din Opera 12, websocket-ul este activat.
Caracteristici | Crom | Firefox (Gecko) | Internet Explorer | Operă | Safari |
---|---|---|---|---|---|
Suport pentru versiunea -76 | 6 | 4.0 (2.0) | Fără sprijin | 11.00 (dezactivat) | 5.0.1 |
Suport pentru versiunea 7 a protocolului | Fără sprijin | 6.0 | Fără sprijin | Fără sprijin | Fără sprijin |
Suport pentru versiunea 10 a protocolului | 14 | 7.0 | Laboratoare HTML5 | ? | ? |
Standard - Suport RFC 6455 | 16 | 11.0 | 10 | 12.10 | 6 |