Browse Source

Fix heartbeat interval bug.

pull/1/head
Rapptz 10 years ago
parent
commit
5960100d1c
  1. 24
      discord/client.py

24
discord/client.py

@ -25,9 +25,10 @@ DEALINGS IN THE SOFTWARE.
"""
import requests
import json, re
import json, re, time
import endpoints
from collections import deque
from threading import Timer
from ws4py.client.threadedclient import WebSocketClient
from sys import platform as sys_platform
from errors import InvalidEventName, InvalidDestination
@ -39,6 +40,20 @@ from message import Message
def _null_event(*args, **kwargs):
pass
def _keep_alive_handler(seconds, ws):
def wrapper():
_keep_alive_handler(seconds, ws)
payload = {
'op': 1,
'd': int(time.time())
}
ws.send(json.dumps(payload))
t = Timer(seconds, wrapper)
t.start()
return t
class Client(object):
"""Represents a client connection that connects to Discord.
This class is used to interact with the Discord WebSocket and API.
@ -124,7 +139,8 @@ class Client(object):
self.private_channels.append(PrivateChannel(id=pm['id'], user=User(**pm['recipient'])))
# set the keep alive interval..
self.ws.heartbeat_freq = data.get('heartbeat_interval')
interval = data.get('heartbeat_interval') / 1000.0
self.keep_alive = _keep_alive_handler(interval, self.ws)
# we're all ready
self.events['on_ready']()
@ -142,10 +158,10 @@ class Client(object):
self.messages.remove(found)
def _opened(self):
print('Opened!')
print('Opened at {}'.format(int(time.time())))
def _closed(self, code, reason=None):
print('closed with ', code, reason)
print('Closed with {} ("{}") at {}'.format(code, reason, int(time.time())))
def run(self):
"""Runs the client and allows it to receive messages and events."""

Loading…
Cancel
Save