Вопрос

В моем постоянном любопытстве о WebSockets я заменяю тенденцию:

«Hello World» Websocket Universe, по крайней мере, на данный момент, кажется, «эхо» функциональность. То есть продемонстрированное приложение, как правило, «я что-то отправляю, я что-то получаю».

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

Например, единственная демонстрация (на стороне сервера), которую я могу найти из 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()

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

(Те, кто интересуется этим вопросом, может также относиться к тому, что он заставляет этот вопрос, который я спросил несколько дней назад: Изготовление движений с WebSockets и Python / Django (/ скручено?))

Это было полезно?

Решение 2

С использованием хендрикс, Я показал, как настроить веб-приложение в Разговор в Django-Nyc Это использует WebSockets для толкания сообщений с сервера Telnet на веб-страницу.

Другие советы

Это пример обновленного эхообразования, который будет вместо того, чтобы быть просто реактивным, быть активным.

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)

К сожалению, Websockets из https://github.com/rlotun/txwebocket/ , кажется, не имеет метода ConnectionMade (), а вместо этого единственное, что вы можете зацепить, это __в этом__. Обычно вы просто переопределите ConnectionMade (), если это был «нормальный» скрученный протокол. --Fixed в выше по течению

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top