![](/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.