私が探していたものをここに定期的に見つけたので、私はオーバーフローするのが新しいです。しかし今回は、どのように扱うべきか分かりません。私は竜巻websocketサーバーを設定し、別のクラスからwebsocketスレッドにアクセスしたいと思いますが、残念なことにwebsocketクラスは3つの異なる引数を必要とし、通常の方法ではアクセスできません。私は複数のクラスを持っている理由別のクラスの竜巻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