簡體   English   中英

從另一個類訪問tornado websocket類方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM