Twisted и Websockets: Beyond Echo

В моем непрекращающемся интересе к веб-сокетам я замечаю тенденцию:

«Привет, мир» вселенной веб-сокетов, по крайней мере на данный момент, кажется «эхом». функциональность. То есть демонстрируемое приложение обычно выглядит следующим образом: «Я что-то отправляю, я что-то получаю»

Хотя этот пример удачно демонстрирует, что протокол работает, этот пример фактически демонстрирует только тот же тип связи, который позволяет традиционный цикл запроса / ответа.

Например, единственная демонстрация twisted.web.websockets (на стороне сервера), которую я могу найти, это следующая:

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()

Как я могу вместо этого проверить возможность "проталкивания"? то есть, как я могу оставить веб-сокет открытым, а затем позже, в какое-то время, определяемое возникновением некоторого события, отправить сообщение через веб-сокет, на содержание которого также влияет это событие?

(Те, кто заинтересован этот вопрос может также рассматриваться как убедительный вопрос, который я задал несколько дней назад: Выполнение движений с использованием веб-сокетов и python / django (/ twisted?) )

12
задан Community 23 May 2017 в 10:30
поделиться