![](/img/trans.png)
[英]Python Tornado: Sending websocket messages from another class
[英]Access tornado websocket class method from another class
我是堆栈溢出的新手,因为我经常在这里找到我一直在寻找的东西。 但是这次,我不知道该如何处理。 我设置了一个龙卷风websocket服务器,并想从另一个类中访问websocket线程,但是不幸的是,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方法的信息,但是我不确定这是否有用。
我为任何解决方案感到高兴。 非常感谢!
好的,我在WebsocketHandler之外使用了connections = []
(而不是connections = set()
,因为它可以通过索引访问)。 为了在打开时将客户端连接添加到列表,我使用connections.append(self)
,在关闭connections.remove(self)
上删除它们。
调用方法:
if len(connections) > 0:
connections[0].toggle()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.