WebSocket

A WebSocket internetes technológia, ami kétirányú, duplex kommunikációs csatornák kiépítését teszi lehetővé egyetlen TCP protokollon keresztül. Kifejlesztésének fő motivációja volt, hogy a webböngészőben futó alkalmazás képes legyen a szerverrel való kétirányú kommunikációra a Comet barkácsmegoldásai[1] (több HTTP-kapcsolat nyitva tartása; XMLHttpRequest vagy <iframe> és long polling) nélkül, bizonyos esetekben a szükségtelen fejlécforgalom akár 500:1-1000:1 arányú, a késleltetés 3:1 arányú csökkentésével.[2] Korlátozó tényező volt a HTTP 1.1 specifikációja, mely kimondja, hogy a böngészőnek legfeljebb két kapcsolatot szabad egyidejűleg nyitva tartani a webszerver felé.[3] A WebSocketet megelőzően nem volt lehetséges komplexebb, a szerverrel valós idejű kommunikációt igénylő webes alkalmazást, pl. csevegő alkalmazások, árfolyamkijelzők, játékok, levelezőkliensek a HTTP-kapcsolat nem rendeltetésszerű használata nélkül megvalósítani.[4]

Bár a fő cél a webböngészőkben és webszervereken való implementáció, más kliens-szerver megoldásokban is használható. A WebSocket API-t a W3C szabványosítja, míg a WebSocket protokollt az IETF az RFC 6455-ben írja le.[5] Mivel nem otthoni környezetben a nem a 80-as TCP portra irányuló kapcsolatokat a rendszergazdák sok esetben blokkolják, a WebSocket arra is használható, hogy a korlátozások ellenére – és a protokollból eredő némi vízfej mellett – az egyetlen hozzáférhető TCP porton több WebSocket-szolgáltatást multiplexáljanak.

A kliensoldalon a WebSocketet eddig a Firefox 4, a Google Chrome 4, az Opera 11 és a Safari 5 böngészőkben valósították meg, továbbá része a Safari mobil verziójának az iOS 4.2-ben.[6] Az OS7-ben lévő BlackBerry Browser is támogatja.[7] A protokoll korai verziójának sebezhetősége miatt a Firefox 4, Firefox 5 és Opera 11 böngészőkben alapértelmezetten kikapcsolták.[8][9] A WebSocket protokoll hibáját a -07 verzióban orvosolták, amit a Firefox 6-ban,[10] illetve a -10 verziót a Chrome 14-ben implementáltak és alapértelmezetten be is kapcsoltak.[11]

Létezik továbbá a Google Chrome-nak egy parancssori kapcsolója (--enable-websocket-over-spdy), ami lehetővé teszi a WebSocket SPDY protokoll fölötti korai, kísérleti implementációjának használatát.[12]

  1. Comet Daily: Independence Day: HTML5 WebSocket Liberates Comet From Hacks. [2008. július 4-i dátummal az eredetiből archiválva]. (Hozzáférés: 2011. szeptember 17.)
  2. WebSocket.org: HTML5 Web Sockets: A Quantum Leap in Scalability for the Web. [2011. szeptember 23-i dátummal az eredetiből archiválva]. (Hozzáférés: 2011. szeptember 18.)
  3. HTTP 1.1 specification, section 8.1.4. W3C. Hozzáférés ideje: 2011-09-17
  4. The WebSocket Protocol
  5. RFC 6455
  6. Katie Marsal: Apple adds accelerometer, WebSockets support to Safari in iOS 4.2. AppleInsider.com, 2010. november 23. (Hozzáférés: 2011. május 9.)
  7. Web Sockets API. RIM. [2011. június 10-i dátummal az eredetiből archiválva]. (Hozzáférés: 2011. július 8.)
  8. Chris Heilmann: WebSocket disabled in Firefox 4. Hacks.Mozilla.org, 2010. december 8. (Hozzáférés: 2011. május 9.)
  9. Aleksander Aas: Regarding WebSocket. My Opera Blog, 2010. december 10. [2010. december 15-i dátummal az eredetiből archiválva]. (Hozzáférés: 2011. május 9.)
  10. Dirkjan Ochtman: WebSocket enabled in Firefox 6. Mozilla.org, 2011. május 27. [2012. május 26-i dátummal az eredetiből archiválva]. (Hozzáférés: 2011. június 30.)
  11. Chromium Web Platform Status. (Hozzáférés: 2011. augusztus 3.)
  12. List of Chromium Command Line Switches

Developed by StudentB