www.wikidata.de-de.nina.az
WebSocket Protokoll Familie InternetprotokollfamilieEinsatzgebiet bidirektionale Verbindung zwischen einer Webanwendung und einem WebSocket ServerPort 80 TCP 443 TCPWebSocket im TCP IP Protokollstapel Anwendung WebSocketTransport TCPInternet IP IPv4 IPv6 Netzzugang Ethernet TokenBus TokenRing FDDI Standards RFC 6455 1 Das WebSocket Protokoll ist ein auf TCP basierendes Netzwerkprotokoll das entworfen wurde um eine bidirektionale Verbindung zwischen einer Webanwendung und einem WebSocket Server bzw einem Webserver der auch WebSockets unterstutzt herzustellen Inhaltsverzeichnis 1 Vorteile gegenuber reinem HTTP 2 URI Schema 3 Der WebSocket Protokoll Handshake 3 1 Anfrage des Clients 3 2 Antwort des Servers 4 Beispiel 5 Erweiterungen 6 Browser Unterstutzung 7 Literatur 8 Weblinks 9 EinzelnachweiseVorteile gegenuber reinem HTTP BearbeitenWahrend bei einer reinen HTTP Verbindung jede Aktion des Servers eine vorhergehende Anfrage des Clients erfordert reicht es beim WebSocket Protokoll wenn der Client die Verbindung offnet Der Server kann dann diese offene Verbindung aktiv verwenden und neue Informationen an den Client ausliefern ohne auf eine neue Verbindung des Clients zu warten Eine vom Server initiierte Ubertragung ist bei einer reinen HTTP Verbindung nur durch verzogertes Antworten auf eine vom Client initiierte Anfrage moglich long Polling Seit HTTP 2 kann der Server auch Push Meldungen absetzen Zudem entfallen bei WebSockets die durch den HTTP Header verursachten zusatzlichen Daten die bei jeder Anfrage einige hundert Bytes umfassen konnen Technisch betrachtet startet bei WebSocket wie bei HTTP der Client eine Anfrage mit dem Unterschied dass nach der Ubertragung der Daten zum Verbindungsaufbau die zugrundeliegende TCP Verbindung bestehen bleibt und asynchrone Ubertragungen in beide Richtungen ermoglicht URI Schema BearbeitenDie WebSocket Protokoll Spezifikation definiert zwei neue URI Schemata ws fur unverschlusselte und wss fur verschlusselte Verbindungen Der WebSocket Protokoll Handshake BearbeitenZu Beginn jeder Verbindung fuhren Server und Client einen sogenannten Handshake durch Dieser ahnelt dem HTTP Header und ist vollstandig abwartskompatibel zu diesem was die Nutzung des Standard HTTP Ports 80 zugleich fur normale HTTP Kommunikation als auch fur die Websocket Nutzung ermoglicht Der Handshake beinhaltet ausserdem weitere Informationen z B die verwendete Protokollversion Anfrage des Clients Bearbeiten Im Folgenden ist ein Beispielhandshake des siebzehnten Protokollentwurfs draft ietf hybi thewebsocketprotocol 17 dargestellt und erlautert 2 Achtung Altere Protokollentwurfe konnen sehr stark von dieser Version des Protokolls abweichen da es aufgrund von Sicherheitsbedenken umgestaltet wurde Dies betrifft insbesondere die Entwurfe vor draft ietf hybi thewebsocketprotocol 04 GET chat HTTP 1 1 Host server example com Upgrade websocket Connection Upgrade Sec WebSocket Key dGhlIHNhbXBsZSBub25jZQ Origin http example com Sec WebSocket Protocol chat superchat Sec WebSocket Version 13 Wie auch im HTTP Protokoll gibt der Client an auf welche Ressource hier chat und auf welchen Host hier server example com er zugreifen mochte Ausserdem fordert der Client ein Upgrade auf das Websocket Protokoll Der zufallig generierte Sec WebSocket Key dient zur Uberprufung ob der Server die Anfrage tatsachlich gelesen und verstanden hat siehe Abschnitt Antwort des Servers Unter Sec WebSocket Protocol hat der Client die Moglichkeit auf das Websocket Protokoll aufbauende Protokolle anzugeben die die Clientanwendung unterstutzt hier ein Chat Protokoll Selbsterklarend sollte unter Sec WebSocket Version die verwendete Protokollversion angegeben werden Antwort des Servers Bearbeiten Auf die obige Beispielanfrage konnte ein Websocket Server beispielsweise wie folgt antworten HTTP 1 1 101 Switching Protocols Upgrade websocket Connection Upgrade Sec WebSocket Accept s3pPLMBiTxaQ9kYGzzhZRbK xOo Sec WebSocket Protocol chat Durch den HTTP Statuscode 101 und die folgenden zwei Zeilen erklart der Server dass er mit dem Wechsel des Protokolls einverstanden ist Von diesem Zeitpunkt an verwenden beide ein binares Protokoll das nicht mehr HTTP kompatibel ist Es ist in Pakete aufgeteilt die als Binar oder Text als Ping oder Pong oder als Ende der Verbindung markiert sind und die Lange des Inhalts angeben 3 Der zuruckgesendete Schlussel unter Sec WebSocket Accept dient der Verifikation dass der Server die Anfrage des Clients gelesen hat Er wird wie folgt erstellt An den oben erwahnten Base64 kodierten String den der Client sendet Sec WebSocket Key wird der Globally Unique Identifier 258EAFA5 E914 47DA 95CA C5AB0DC85B11 angehangt Daraufhin wird ein SHA1 Hash des entstandenen Schlussels erstellt und Base64 kodiert Anzumerken ist hierbei dass der ursprunglich empfangene Schlussel zwar Base64 kodiert ist jedoch zu keinem Zeitpunkt dekodiert wird In diesem Beispiel gibt der Server zusatzlich an dass er das angeforderte Protokoll chat kennt Sec WebSocket Protocol Beispiel BearbeitenWebSocket Client in JavaScript var socket new WebSocket urlToWebsocketServer callback Funktion wird gerufen wenn die Verbindung erfolgreich aufgebaut werden konnte socket onopen function console log Verbindung wurde erfolgreich aufgebaut callback Funktion wird gerufen wenn eine neue Websocket Nachricht eintrifft socket onmessage function messageEvent console log messageEvent data callback Funktion wird gerufen wenn ein Fehler auftritt socket onerror function errorEvent console log Error Die Verbindung wurde unerwartet geschlossen socket onclose function closeEvent console log Die Verbindung wurde geschlossen Code closeEvent code Grund closeEvent reason Erweiterungen BearbeitenDie Spezifikation erlaubt die Erweiterung des Websocket Protokolls durch definierte Extensions Diese werden zwischen Client und Server ausgehandelt Beispiele WebSocket Per frame Compression A Multiplexing Extension for WebSockets The MessageBroker WebSocket SubprotocolBrowser Unterstutzung BearbeitenAuf WebKit basierende Browser z B Google Chrome Apple Safari Opera ab Version 10 70 Microsoft Edge ab erster Version Mozilla Firefox ab Version 4 4 Internet Explorer ab Version 10 0Literatur BearbeitenPeter Leo Gorski Luigi Lo Iacono Hoai Viet Nguyen WebSockets Moderne HTML5 Echtzeitanwendungen entwickeln Hanser Munchen und Wien 2015 ISBN 978 3 446 44371 6Weblinks BearbeitenRFC 6455 The WebSocket Protocol Version 13 2011 englisch The WebSocket API WHATWG Entwurf fur die API Spezifikation HTML5 Server Push Technologies Part 2 community oracle com Einfuhrung in WebSockets WebSocket Annaherung an Echtzeit im Web heise DeveloperEinzelnachweise Bearbeiten RFC 6455 The WebSocket Protocol Version 13 2011 englisch Der vorliegende Beispielhandshake entstammt der siebzehnten Version des WebSocket Protocol Draft der IETF RFC 6455 The WebSocket Protocol Version 13 2011 Abschnitt 5 2 Base Framing Protocoll englisch developer mozilla orgV DStandards des World Wide Web Consortiums W3C Empfehlungen ActivityPub ARIA Canonical XML CDF CSS DOM Geolocation API HTML HTML5 InkML ITS JSON LD MathML OWL P3P PLS PNG RDF RDF Schema RIF SCXML SISR SKOS SMIL SOAP SRGS SSML SVG SPARQL Timed Text Turtle VoiceXML WSDL XForms XHTML XHTML RDFa XInclude XLink XML XML Base XML Encryption XML Events XML Information Set XML Namespace XML Schema XML Signature XPath XPointer XProc XQuery XSL XSL FO XSLT Elemente nbsp Arbeitsentwurfeund Kandidaten CCXML CURIE SMIL Timesheets sXBL WICD XFrames XBL XHTML MathML SVG XMLHttpRequestAnmerkungen XAdES XFDL XHTML SMIL XUPRichtlinien Web Content Accessibility Guidelines Multimodal Interaction Activity Markup Validation ServiceInitiativen Web Accessibility Initiative Abgerufen von https de wikipedia org w index php title WebSocket amp oldid 234984963