Fix heartbeat interval bug.
This commit is contained in:
parent
f580441c10
commit
5960100d1c
@ -25,9 +25,10 @@ DEALINGS IN THE SOFTWARE.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
import json, re
|
import json, re, time
|
||||||
import endpoints
|
import endpoints
|
||||||
from collections import deque
|
from collections import deque
|
||||||
|
from threading import Timer
|
||||||
from ws4py.client.threadedclient import WebSocketClient
|
from ws4py.client.threadedclient import WebSocketClient
|
||||||
from sys import platform as sys_platform
|
from sys import platform as sys_platform
|
||||||
from errors import InvalidEventName, InvalidDestination
|
from errors import InvalidEventName, InvalidDestination
|
||||||
@ -39,6 +40,20 @@ from message import Message
|
|||||||
def _null_event(*args, **kwargs):
|
def _null_event(*args, **kwargs):
|
||||||
pass
|
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):
|
class Client(object):
|
||||||
"""Represents a client connection that connects to Discord.
|
"""Represents a client connection that connects to Discord.
|
||||||
This class is used to interact with the Discord WebSocket and API.
|
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'])))
|
self.private_channels.append(PrivateChannel(id=pm['id'], user=User(**pm['recipient'])))
|
||||||
|
|
||||||
# set the keep alive interval..
|
# 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
|
# we're all ready
|
||||||
self.events['on_ready']()
|
self.events['on_ready']()
|
||||||
@ -142,10 +158,10 @@ class Client(object):
|
|||||||
self.messages.remove(found)
|
self.messages.remove(found)
|
||||||
|
|
||||||
def _opened(self):
|
def _opened(self):
|
||||||
print('Opened!')
|
print('Opened at {}'.format(int(time.time())))
|
||||||
|
|
||||||
def _closed(self, code, reason=None):
|
def _closed(self, code, reason=None):
|
||||||
print('closed with ', code, reason)
|
print('Closed with {} ("{}") at {}'.format(code, reason, int(time.time())))
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
"""Runs the client and allows it to receive messages and events."""
|
"""Runs the client and allows it to receive messages and events."""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user