Frage

In meiner anhaltenden Neugier über Websockets merke ich einen Trend:

Die "Hallo Welt" des Websocket -Universums scheint zumindest momentan "Echo" -Funktionalität zu sein. Das heißt, die nachgewiesene Bewerbung lautet normalerweise: "Ich sende etwas, ich erhalte etwas."

Während das Protokoll treffend demonstriert, dass das Protokoll funktionsfähig ist, zeigt dieses Beispiel nur die gleiche Art der Kommunikation, die der herkömmliche Anforderungs- / Antwortzyklus ermöglicht.

Beispielsweise ist die einzige Demonstration (auf der Serverseite), die ich von twwned.web.websockets finden kann, das 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 stattdessen hier die "Push" -Funktion untersuchen? dh wie ich den Web -Socket offen lassen kann und später zu einem bestimmten Zeitpunkt durch das Auftreten eines Ereignisses eine Nachricht über das WebSocket senden, dessen Inhalt auch von diesem Ereignis beeinflusst wird?

(Diejenigen, die diese Frage interessiert, könnten diese Frage, die ich vor einigen Tagen gestellt habe, auch als überzeugend ansehen: Move Moves w / Websockets und Python / Django ( / Twisted?))

War es hilfreich?

Lösung 2

Verwendung Hendrix, Ich habe gezeigt, wie man eine Web -App einrichtet in Ein Vortrag bei Django-nyc Dadurch wird Websockets verwendet, um Nachrichten von einem Telnet -Server auf eine Webseite zu verschieben.

Andere Tipps

Dies ist ein Beispiel für ein aktualisiertes Echohandler, das anstatt nur reaktiv zu sein, proaktiv ist.

class ChattyHandler(WebSocketHandler):
    def connectionMade(self):
        self.transport.write('oh hai\n')
        self.saysomething()

    def saysomething(self):
        self.transport.write('still there?\n')
        reactor.callLater(5, self.saysomething)

Leider Websockets von https://github.com/rlotun/txwebsocket/ Scheint nicht die ConnectionMade () __drin__. Normalerweise überschreiben Sie nur ConnectionMade (), wenn es ein "normales" verdrehter Protokoll wäre. -In stromaufwärts gefixiert

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top