aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--discord/gateway.py9
1 files changed, 9 insertions, 0 deletions
diff --git a/discord/gateway.py b/discord/gateway.py
index 0ee0d62e..d5ddb9eb 100644
--- a/discord/gateway.py
+++ b/discord/gateway.py
@@ -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)