mirror of
https://github.com/Rapptz/discord.py.git
synced 2025-04-20 16:00:29 +00:00
Add DiscordWebSocket.latency to measure discord heartbeat latency.
This commit is contained in:
parent
f490afa5dc
commit
ceafae0ab2
@ -63,6 +63,7 @@ class KeepAliveHandler(threading.Thread):
|
||||
self.msg = 'Keeping websocket alive with sequence %s.'
|
||||
self._stop_ev = threading.Event()
|
||||
self._last_ack = time.time()
|
||||
self._last_send = time.time()
|
||||
|
||||
def run(self):
|
||||
while not self._stop_ev.wait(self.interval):
|
||||
@ -88,6 +89,8 @@ class KeepAliveHandler(threading.Thread):
|
||||
f.result()
|
||||
except Exception:
|
||||
self.stop()
|
||||
else:
|
||||
self._last_send = time.time()
|
||||
|
||||
def get_payload(self):
|
||||
return {
|
||||
@ -408,6 +411,12 @@ class DiscordWebSocket(websockets.client.WebSocketClientProtocol):
|
||||
for index in reversed(removed):
|
||||
del self._dispatch_listeners[index]
|
||||
|
||||
@property
|
||||
def latency(self):
|
||||
"""float: Measures latency between a HEARTBEAT and a HEARTBEAT_ACK in seconds."""
|
||||
heartbeat = self._keep_alive
|
||||
return float('inf') if heartbeat is None else heartbeat._last_ack - heartbeat._last_send
|
||||
|
||||
def _can_handle_close(self, code):
|
||||
return code not in (1000, 4004, 4010, 4011)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user