X-Git-Url: https://plomlompom.com/repos/unset_cookie?a=blobdiff_plain;f=new2%2Frogue_chat_curses.py;h=c8a17c888388dcfb9317896a7d830ac2bd00b9cf;hb=478d293913c37ed1bc98ab65db9658c58d6f7081;hp=ee2cae8f5abad5682ef5fa7e17a7cf15e8cfdf4a;hpb=e14622d75ec8729ec94221340d65a1ebadab8bfa;p=plomrogue2-experiments diff --git a/new2/rogue_chat_curses.py b/new2/rogue_chat_curses.py index ee2cae8..c8a17c8 100755 --- a/new2/rogue_chat_curses.py +++ b/new2/rogue_chat_curses.py @@ -39,8 +39,12 @@ class PlomSocketClient(PlomSocket): self.socket.close() def run(self): + import ssl try: for msg in self.recv(): + if msg == 'NEED_SSL': + self.socket = ssl.wrap_socket(self.socket) + continue self.recv_handler(msg) except BrokenSocketConnection: pass # we assume socket will be known as dead by now @@ -139,8 +143,13 @@ def cmd_ANNOTATION(game, position, msg): game.tui.do_refresh = True cmd_ANNOTATION.argtypes = 'yx_tuple:nonneg string' +def cmd_PONG(game): + pass +cmd_PONG.argtypes = '' + class Game(GameBase): commands = {'LOGIN_OK': cmd_LOGIN_OK, + 'PONG': cmd_PONG, 'CHAT': cmd_CHAT, 'PLAYER_ID': cmd_PLAYER_ID, 'TURN': cmd_TURN, @@ -296,6 +305,7 @@ class TUI: def loop(self, stdscr): import time + import datetime def safe_addstr(y, x, line): if y < self.size.y - 1 or x + len(line) < self.size.x: @@ -492,7 +502,13 @@ class TUI: self.input_ = '' input_prompt = '> ' connect() + last_ping = datetime.datetime.now() + interval = datetime.timedelta(seconds=30) while True: + now = datetime.datetime.now() + if now - last_ping > interval: + self.send('PING') + last_ping = now if self.do_refresh: draw_screen() self.do_refresh = False @@ -594,4 +610,4 @@ class TUI: self.send('TASK:WRITE ' + key) self.switch_mode('play') -TUI('127.0.0.1:5000') +TUI('localhost:5000')