de:netzer:websockets

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
de:netzer:websockets [2013/02/22 16:00] – [WebSocket-URI] sveschde:netzer:websockets [2025/06/11 20:42] (current) – external edit 127.0.0.1
Line 1: Line 1:
-====== Warum WebSockets? ======+======= WebSocket =======
  
 +WebSocket ist ein Protokoll für bidirektionale Kommunikation zwischen einer Webanwendung und einem Server über eine TCP-Verbindung.\\
 +Der Netzer nutzt WebSocket als ein Kanal für die [[commandinterface|Kommandoschnittstelle]].
 +
 +
 +====== Warum WebSocket? ======
  
 Bei klassisches HTTP sendet ein Client (z.B. der Browser) eine Anfrage (Request) die dann vom Server (z.B. einem Netzer) beantwortet wird (Response). Der Server kann nicht von sich aus Daten an den Client senden. Bei klassisches HTTP sendet ein Client (z.B. der Browser) eine Anfrage (Request) die dann vom Server (z.B. einem Netzer) beantwortet wird (Response). Der Server kann nicht von sich aus Daten an den Client senden.
 Dies ist zum Beispiel dann von Nachteil, wenn Daten in unregelmäßigen Abständen aufgefrischt werden müssen. In solchen Fällen muss der Client auf gut Glück Anfragen stellen, die der Server jedesmal beantworten muss. Dies erzeugt viel unnötigen Datenverkehr. Dies ist zum Beispiel dann von Nachteil, wenn Daten in unregelmäßigen Abständen aufgefrischt werden müssen. In solchen Fällen muss der Client auf gut Glück Anfragen stellen, die der Server jedesmal beantworten muss. Dies erzeugt viel unnötigen Datenverkehr.
  
-WebSockets sind eine Möglichkeit für bidirektionale Kommunikation zwischen Server und Client. D.h. sowohl Client, als auch Server können jederzeit Daten an das Gegenüber senden. Beim Auffrischen von Daten reicht es dann aus, wenn der Server neue Daten sendet, sobald diese verfügbar sind. Der Client muss nicht ständig Anfragen stellen.+WebSocket ist eine Möglichkeit für bidirektionale Kommunikation zwischen Server und Client. D.h. sowohl Client, als auch Server können jederzeit Daten an das Gegenüber senden. Beim Auffrischen von Daten reicht es dann aus, wenn der Server neue Daten sendet, sobald diese verfügbar sind. Der Client muss nicht ständig Anfragen stellen.
  
 +<note important>
 +Der Netzer unterstützt Websocket ab Version 1.5 !
 +</note>
  
-====== WebSocket-URI ======+====== Einschränkungen ======
  
 +Da eine aktive WebSocket-Verbindung stets eine aktive TCP-Verbindung zum Webserver des Netzers benötigt, blockiert sie den Zugriff auf Webseiten. 
 +Des Weiteren kann zu jeder Zeit maximal eine WebSocket-Verbindung aufgebaut werden.
  
-Im Allgemeinen beginnen unverschlüsselte WebSocket-URI mit ''%%ws://%%'' und verschlüsselte mit ''%%wss://%%''. Der Netzer unterstützt zur Zeit nur unverschlüsselte WebSocket-Verbindungen.  
  
-Die WebSocket-URI eines Netzers folgt dem Schema ''%%ws://NETZER/ws%%'', wobei ''NETZER'' entweder die IP oder der mDNS-Name des Netzers ist. +===== Unterstützte Befehle =====
-Die WebSocket-Funktion eines Netzers mit der IP ''192.168.0.2'' und dem mDNS-Namen ''meinNetzer.local'' ist unter ''%%ws://192.168.0.2/ws%%'' und ''%%ws://meinNetzer.local/ws%%'' erreichbar.+
  
 +Es werden alle Befehle der [[commandinterface|Kommandoschnittstelle]] unterstützt.
 +Darüberhinaus gibt es keine für WebSocket spezifischen Befehle. 
  
-====== WebSockets in JavaScript ======+ 
 +====== WebSocket-URI ====== 
 + 
 +Im Allgemeinen beginnen unverschlüsselte WebSocket-URI mit ''%%ws://%%'' und verschlüsselte mit ''%%wss://%%''. Der Netzer unterstützt zur Zeit nur unverschlüsselte WebSocket-Verbindungen.  
 + 
 +Die WebSocket-URI eines Netzers folgt dem Schema ''%%ws://NETZER/ws%%'', wobei ''NETZER'' entweder die IP oder der [[networksettings#netzwerkname|mDNS-Name]] des Netzers ist. 
 +Die WebSocket-Funktion eines Netzers mit der IP ''192.168.0.2'' und dem mDNS-Namen ''meinNetzer.local'' ist unter ''%%ws://192.168.0.2/ws%%'' und ''%%ws://meinNetzer.local/ws%%'' erreichbar. 
  
  
 +====== WebSocket in JavaScript ======
  
 ===== Verbindung öffnen ===== ===== Verbindung öffnen =====
Line 28: Line 45:
 <code>var meinWebSocket = new WebSocket(meineWebSocketURI);</code> <code>var meinWebSocket = new WebSocket(meineWebSocketURI);</code>
  
-In manchen Firefox-Versionen (bis Version 11) heißt das WebSocket-Objekt "MozWebSocket". Alle anderen Bezeichnungen sind gleich (sofern sie implementiert wurden).+In manchen Firefox-Versionen (bis Version 11) heißt das WebSocket-Objekt "MozWebSocket". Alle anderen Bezeichnungen sind gleich (sofern sie implementiert wurden). Entsprechende Informationen, welche Browser derzeit Websocket unterstützen findet man hier (englisch): [[wp>WebSocket#Browser_support]].
  
 <code>var meinWebSocket = new MozWebSocket(meineWebSocketURI);</code> <code>var meinWebSocket = new MozWebSocket(meineWebSocketURI);</code>
Line 36: Line 53:
  
  
-WebSockets unterstützen grundsätzlich zwei Übertragungsarten: Text (UTF-8) und binär. Daten werden mit Hilfe von ''send(meineDaten)'' gesendet, wobei die Übertragungsart durch den Datentyp von ''meineDaten'' bestimmt wird.+WebSocket unterstützt grundsätzlich zwei Übertragungsarten: Text (UTF-8) und binär. Daten werden mit Hilfe von ''send(meineDaten)'' gesendet, wobei die Übertragungsart durch den Datentyp von ''meineDaten'' bestimmt wird.
  
 Da der Netzer nur Text-Übertragungen benutzt, wird an dieser Stelle auch nur diese weiter besprochen. Da der Netzer nur Text-Übertragungen benutzt, wird an dieser Stelle auch nur diese weiter besprochen.
Line 56: Line 73:
 ===== Verbindung schließen ===== ===== Verbindung schließen =====
  
- +Um die WebSocket-Verbindung zu schließen, wird die Funktion ''close()'' aufgerufen. Optional kann noch ein Close-Code und eine Begründung (Reason) angegeben werden. Allerdings werden beide vom Netzer nicht weiter ausgewertet.
-Um die WebSocket-Verbindung zu schließen wird, die Funktion ''close()'' aufgerufen. Optional kann noch ein Close-Code und eine Begründung (Reason) angegeben werden. Allerdings werden beide vom Netzer nicht weiter ausgewertet.+
  
 <code>meinWebSocket.close();</code> <code>meinWebSocket.close();</code>
Line 89: Line 105:
 Anzeigen des aktuellen Wertes von IO-0. Anzeigen des aktuellen Wertes von IO-0.
 <WRAP center round download 60%> <WRAP center round download 60%>
-{{:de:netzer:websocket.htm|}}+[[@/examples/websocket_de.html|websocket.htm]]
 </WRAP> </WRAP>
  
Line 154: Line 170:
  <input value="ws://test.local/ws" id="netzer_url" type="url">  <input value="ws://test.local/ws" id="netzer_url" type="url">
  <input id="anwenden_button" value="Anwenden" type="button">  <input id="anwenden_button" value="Anwenden" type="button">
- <div id="io_wert"></div>+ <p><div style="float:left; padding-right:5px">Wert von IO0:</div><div id="io_wert">N/A</div></p> 
 + <div style="clear:both;">
  </body>  </body>
 </html> </html>
 </code> </code>