Merge pull request #69 from michael-mri/master
avoid polling when waiting to send ping.
This commit is contained in:
commit
cbcdcc86b4
@ -901,12 +901,8 @@ class WebSocketApp(object):
|
||||
self.keep_running = False
|
||||
self.sock.close()
|
||||
|
||||
def _send_ping(self, interval):
|
||||
while True:
|
||||
for i in range(interval):
|
||||
time.sleep(1)
|
||||
if not self.keep_running:
|
||||
return
|
||||
def _send_ping(self, interval, event):
|
||||
while not event.wait(interval):
|
||||
self.sock.ping()
|
||||
|
||||
def run_forever(self, sockopt=None, sslopt=None, ping_interval=0):
|
||||
@ -935,7 +931,8 @@ class WebSocketApp(object):
|
||||
self._callback(self.on_open)
|
||||
|
||||
if ping_interval:
|
||||
thread = threading.Thread(target=self._send_ping, args=(ping_interval,))
|
||||
event = threading.Event()
|
||||
thread = threading.Thread(target=self._send_ping, args=(ping_interval, event))
|
||||
thread.setDaemon(True)
|
||||
thread.start()
|
||||
|
||||
@ -958,6 +955,8 @@ class WebSocketApp(object):
|
||||
self._callback(self.on_error, e)
|
||||
finally:
|
||||
if thread:
|
||||
event.set()
|
||||
thread.join()
|
||||
self.keep_running = False
|
||||
self.sock.close()
|
||||
self._callback(self.on_close)
|
||||
|
Loading…
x
Reference in New Issue
Block a user