トルネードとwebsoketと利用したアプリ
問題点としては、
・WebSocketは、ある時間で通信が切断されるモヨウ(5分ぐらいかな)
サーバー(トルネードで処理)側で、ある時間で切断して対応したが、いまいち。
どうするかだが。
問題はクライアントで勝手に着られると、サーバーはその事を知ることができない。
やはり、あれか!
定期的にクライアントから、意味のないメッセージを送る(使用中ですよ!)
これにより、勝手には切れないはず。
まぁ、ポーリング(監視)があるけど、ホスト側から送ろうか?
これなら、クライアントで切られてもサーバーで後処理ができる。
いや、クライアントからがいいなぁ。
何故ならクライアントが勝手にきれたら
キーボード、マウス入力がなくなったら、おくらない!
WebSocketの基本!
---------------------------------------------------------------------------------
ws = new WebSocket("wss://~URL~:ポート番号/識別子");
※トルネードの場合は、識別子で振り分けられる
app = Application([
#(r"/", MainHandler),
(r"/file", FileHandler),
(r"/識別子", EchoHandler)
])
---------------------------------------------------------------------------------
◆以下で、定期的に接続をチェックするようにしたい
#!/usr/bin/python3
from threading import Timer
class RepeatedTimer(Timer):
def __init__(self, interval, function, args=[], kwargs={}):
Timer.__init__(self, interval, self.run, args, kwargs)
self.thread = None
self.function = function
def run(self):
self.thread = Timer(self.interval, self.run)
self.thread.start()
self.function(*self.args, **self.kwargs)
def cancel(self):
if self.thread is not None:
self.thread.cancel()
self.thread.join()
del self.thread
if __name__=='__main__':
import time
def hello(message):
hello.counter += 1
print(message, hello.counter)
hello.counter = 0
for i in range(3):
t = RepeatedTimer(0.5, hello, ["Hello"])
t.start()
time.sleep(5)
t.cancel()
print("Done.")
hello.counter = 0
◆参考元
https://ja.stackoverflow.com/questions/24508/python%E3%81%AEthreading-timer%E3%81%A7%E5%AE%9A%E6%9C%9F%E7%9A%84%E3%81%AB%E5%87%A6%E7%90%86%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB