从另一个类访问龙卷风网络套接字类方法



我是堆栈溢出的新手,因为我经常在这里找到我一直在寻找的东西。但这一次,我不知道如何处理。我设置了一个龙卷风 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()

相关内容

  • 没有找到相关文章

最新更新