Ich baue eine Web-App, die über Socket-Verbindungen mit einer anderen Anwendung kommunizieren muss. Dies ist Neuland für mich, also möchte ich sicher gehen, dass Sockets anders sind als Websockets . Es scheint, als wären sie nur konzeptionell ähnlich.
Fragen, weil ich ursprünglich geplant hatte, Django als Grundlage für mein Projekt zu verwenden, aber in dem SO -Post, auf den ich oben verlinkt habe, wurde sehr deutlich, dass Websockets nicht möglich sind (oder zumindest nicht zuverlässig, selbst wenn etwas vorliegt) wie Django-Websockets) mit dem bevorzugten Django-Setup (Apache mit mod_wsgi). Ich habe jedoch andere Beiträge gefunden, die das Python-Socket-Modul zufällig für etwas so einfaches importieren, wie den Hostnamen des Servers abrufen .
So:
Um Ihre Fragen zu beantworten.
Websockets verwenden bei ihrer Implementierung Sockets. Websockets basieren auf einem Standardprotokoll (jetzt im letzten Aufruf, aber noch nicht endgültig), das ein "Handshake" für eine Verbindung und ein "Telegramm" für eine Nachricht definiert. Die beiden Seiten durchlaufen die Handshake-Prozedur, um eine Verbindung gegenseitig zu akzeptieren und dann das Standardnachrichtenformat ("Frame") zum Weiterleiten von Nachrichten zu verwenden.
Ich entwickle ein Framework, mit dem Sie direkt mit installierter Software von Maschine zu Maschine kommunizieren können. Es könnte Ihrem Zweck entsprechen. Sie können meinem Blog folgen, wenn Sie möchten: http://highlevellogic.blogspot.com/2011/09/websocket-server-demonstration_26.html
Sie müssten WebSockets verwenden (oder einiges ähnliches Protokollmodul, wie es zB vom Flash-Plugin unterstützt wird), da eine normale Browser-Anwendung ein reines TCP einfach nicht öffnen kann. Steckdose.
Das Socket.IO
Modul, das für node.js
verfügbar ist, kann viel helfen, beachte aber, dass es nicht ist = ein reines WebSocket-Modul für sich.
Tatsächlich handelt es sich um ein allgemeineres Kommunikationsmodul, mit dem über verschiedene andere Netzwerkprotokolle ausgeführt werden können, einschließlich WebSockets und Flash-Sockets.
Wenn Sie also _Socket.IO
_ auf dem Server verwenden möchten, müssen Sie auch deren Clientcode und -objekte verwenden. Sie können keine einfachen WebSocket
Verbindungen zu einem _socket.io
_ Server herstellen, da Sie deren Nachrichtenprotokoll emulieren müssten.
WebSocket ist nur ein anderes Protokoll auf Anwendungsebene über das Protokoll TCP, genau wie HTTP.
Einige der unten zitierten Schnipsel <Spring in Action 4> hoffen, Sie können WebSocket besser verstehen.
In seiner einfachsten Form ist ein WebSocketnurein Kommunikationskanal zwischen zwei Anwendungen (nicht unbedingt ein Browser ist beteiligt) ... WebSocket-Kommunikation kann zwischenjeder Art von .__ verwendet werden. Anwendungen, aber die häufigste Verwendung von WebSocket ist die Erleichterung von Kommunikation zwischen einer Serveranwendung und einer browserbasierten Anwendung.
Beachten Sie bei Ihrer Frage (b), dass die Websocket-Spezifikation noch nicht abgeschlossen ist. Nach dem W3C :
Die Implementierer sollten wissen, dass diese Spezifikation nicht stabil ist.
Persönlich halte ich Websockets für zu blutend, um sie derzeit zu verwenden. Obwohl ich sie wahrscheinlich in einem Jahr oder so nützlich finden werde.
Ich beschuldige den Namen 'WebSocket'. Sie unterscheiden sich in vielerlei Hinsicht. Das einzige, was sie taten, ist, dass sie beide Netzwerkkommunikation betreiben.
sockets
in python ist nur eine Bibliothek der BSD-Socket-Implementierung. Sie können Verbindungen herstellen, die sich auf TCP/IP beziehen. Während WebSocket auf dem vorhandenen HTTP-Protokoll aufbaut und die Verbindung zum WebSocket-Protocal "aufrüstet", gibt es keine einfache Möglichkeit, eine Duplex-Verbindung in HTTP herzustellen.