In meiner laufenden Neugier WebSockets, ich bemerken einen Trend:Verdreht und Websockets: Beyond Echo
Die „Hallo Welt“ des websocket Universum, zumindest im Moment, so scheint „Echo“ Funktionalität zu sein . Das heißt, die gezeigte Anwendung ist typischerweise "Ich sende etwas, ich bekomme etwas".
Dieses Beispiel demonstriert zwar einwandfrei, dass das Protokoll funktionsfähig ist, zeigt jedoch nur die gleiche Art von Kommunikation, die der traditionelle Anfrage/Antwort-Zyklus ermöglicht.
Zum Beispiel die einzige Demonstration (auf der Server-Seite), dass ich von twisted.web.websockets finden kann, ist die folgende:
import sys
from twisted.python import log
from twisted.internet import reactor
from twisted.web.static import File
from twisted.web.websocket import WebSocketHandler, WebSocketSite
class Echohandler(WebSocketHandler):
def frameReceived(self, frame):
log.msg("Received frame '%s'" % frame)
self.transport.write(frame + "\n")
def main():
log.startLogging(sys.stdout)
root = File(".")
site = WebSocketSite(root)
site.addHandler("/ws/echo", Echohandler)
reactor.listenTCP(8080, site)
reactor.run()
if __name__ == "__main__":
main()
Wie kann ich hier „Push“ -Funktion statt untersuchen? dh wie kann ich den Web-Socket offen lassen, und später, irgendwann durch das Auftreten eines Ereignisses bestimmt, eine Nachricht durch den Websocket senden, dessen Inhalt ebenfalls von diesem Ereignis beeinflusst wird?
(Interessenten durch diese Frage könnte auch als zwingende diese Frage betrachten, die ich vor ein paar Tagen gefragt: Making moves w/ websockets and python/django (/ twisted?))
Vorausgesetzt, dass Websockets in Firefox 4 deaktiviert sind http://hacks.mozilla.org/2010/12/webessockets-disabled-in-firefox-4/, und selbst wenn sie fertig sind, möchten sie möglicherweise nicht arbeiten allen Browsern möchten Sie wahrscheinlich eine höhere Abstraktion für Ihre bidirektionale Browserkommunikation untersuchen. Websockets sind nur eine Möglichkeit, Dinge wie Athena http://divmod.org/trac/wiki/DivmodNevow/Athena und Orbited http://orbited.org/ zu optimieren. – Glyph
So schäbig wie die aktuelle Spezifikation (und Unterstützung) ist, sind WebSockets eigentlich keine komplette Neuauflage von Comet (Athena, Orbited, etc.?). Im Moment bin ich nicht an Lösungen interessiert, die in allen Browsern funktionieren; Ich möchte nur etwas bauen, das zwischen mir und anderen Mitgliedern eines Kollektivs funktioniert - wir haben die volle Kontrolle über unsere Browser- und Firewall-Bedingungen. – jMyles
Nein, nicht unbedingt. Athena ist ein komplettes High-Level-Messaging-System, es transportiert nicht nur Bytes. Und Orbited kann mehrere Transporte verwenden, indem es auf primitivere/weniger effiziente Techniken zurückgreift, da es feststellt, dass die besseren nicht verfügbar sind. Das ist etwas, was Sie auch in Ihrer Situation wollen, denn wenn etwas * besser * als Websockets kommt, möchten Sie wahrscheinlich davon profitieren, ohne all Ihren Code neu schreiben zu müssen. – Glyph