Я новичок в переполнении стека, потому что я регулярно нашел здесь то, что искал. Но на этот раз я не знаю, как с этим справиться. Я установил сервер websocket tornado и хотел бы получить доступ к потоку websocket из другого класса, но, к сожалению, класс websocket требует трех разных аргументов и недоступен обычным способом.Доступ к методу класса tornado websocket из другого класса
class WebSocketHandler(tornado.websocket.WebSocketHandler):
def open(self):
self.loop()
def on_message(self, message):
#do something
def on_close(self):
#do something else
def loop(self):
pass
def toggle(self):
#execute
class EventHandler:
def __init__(self):
self.listener()
def listener(self):
def callback(channel):
wsHandler = WebSocketHandler()
wsHandler.toggle()
GPIO.add_event_detect(channel, GPIO.RISING, callback = callback, bouncetime = 1000)
def main():
EventHandler()
application = tornado.web.Application([
(r"/", WebSocketHandler),
])
server = tornado.httpserver.HTTPServer(application)
server.listen(8888)
io_loop = tornado.ioloop.IOLoop.current()
io_loop.start()
if __name__ == "__main__":
main()
Причина, по которой у меня есть несколько классов, заключается в том, что сервер должен прослушивать входные события, даже если клиент не подключен. Но я должен передать входные данные через websocket, если таковой имеется. Я читал о методе add_callback, но я не уверен, полезен ли это.
Я рад любому решению. Спасибо большое!
Кажись ты понял это, видя ваш ответ на этот вопрос [] (http://stackoverflow.com/a/40655053/794749). Вы должны ответить на свой вопрос здесь, а затем принять его. –
Да, но это немного сложнее, потому что метод должен выполняться только один раз; независимо от того, сколько клиентов подключено. – Kjub