Websockets wurden für die schnelle bidirektionale Kommunikation im Browser entwickelt. Angenommen, Sie haben die Kontrolle über den Server und einen nativen Client (z. B. eine iOS- oder Mac-App). Gibt es gute Gründe oder Situationen, um über einen Websocket zu kommunizieren statt eine HTTP-Bibliothek zu verwenden?
Ich werde ein paar verschiedene Fragen beantworten, die hoffentlich zur Beantwortung Ihrer Frage führen:
Gibt es einen Grund, WebSockets von einem Client statt von HTTP zu verwenden? Ja .
WebSockets ist bidirektional, Vollduplex, geringe Latenz und geringer Overhead im Vergleich zu HTTP.
Ein Teil der niedrigeren Latenz und des Overheads im Vergleich zu HTTP / AJAX / COMET besteht darin, dass Sie die Verbindung nicht für jede Anforderung neu herstellen müssen.
Gibt es einen Grund, WebSockets von einem Client statt von rohen Sockets zu verwenden? Ja .
Der anfängliche WebSockets-Handshake ist HTTP-Server-freundlich (und hat einige Ursprungs- und Hash-Austausch-Sicherheitsmechanismen). Es ermöglicht Webservern, einfach aktualisiert zu werden, um Redirect oder Proxy für WebSockets-Verbindungen zu der echten WebSockets-Server-Anwendung zu unterstützen.
Ein weiterer Vorteil von WebSockets ist, dass es sich um ein gerahmtes Protokoll handelt, das es der Anwendung ermöglicht, sich auf nützliche Funktionen zu konzentrieren, ohne sich um eigene Framing- und Pufferfunktionen kümmern zu müssen.
Es ist relativ einfach, bestehenden TCP-Socket-Servern oder Proxy-Servern WebSockets-Unterstützung zu geben, etwa über wsproxy . Disclaimer: Ich habe wsproxy gemacht.
Von einer Serverperspektive aus ist WebSockets ein Gewinn, da auf sie über Standalone-Clients oder über Browser zugegriffen werden kann. Dies bedeutet, dass es immer mehr Dienste geben wird, die derzeit TCP-Socket-basiert sind und über WebSockets verfügbar gemacht werden. Das Hinzufügen eines WebSockets-Supports zu einem Client wird sich in Zukunft auszahlen.