diff --git a/websocket.py b/websocket.py index 0aa56da..17bc64e 100644 --- a/websocket.py +++ b/websocket.py @@ -820,8 +820,11 @@ class WebSocketApp(object): self.sock.close() def _send_ping(self, interval): - while self.keep_running: - time.sleep(interval) + while True: + for i in range(interval): + time.sleep(1) + if not self.keep_running: + return self.sock.ping() def run_forever(self, sockopt=None, sslopt=None, ping_interval=0): @@ -862,6 +865,7 @@ class WebSocketApp(object): self._callback(self.on_error, e) finally: if thread: + self.keep_running = False thread.join() self.sock.close() self._callback(self.on_close)