mirror of
https://github.com/correl/SleekXMPP.git
synced 2024-11-27 19:19:54 +00:00
Add whitespace keepalive option.
May be disabled by setting: self.whitespace_keepalive = False The keepalive interval can be adjusted using: self.whitespace_keepalive_interval = 300 The default interval is 5min.
This commit is contained in:
parent
20cacc84ba
commit
6f72c05ebf
1 changed files with 29 additions and 0 deletions
|
@ -212,6 +212,9 @@ class XMLStream(object):
|
||||||
self.stream_header = "<stream>"
|
self.stream_header = "<stream>"
|
||||||
self.stream_footer = "</stream>"
|
self.stream_footer = "</stream>"
|
||||||
|
|
||||||
|
self.whitespace_keepalive = True
|
||||||
|
self.whitespace_keepalive_interval = 300
|
||||||
|
|
||||||
self.stop = threading.Event()
|
self.stop = threading.Event()
|
||||||
self.stream_end_event = threading.Event()
|
self.stream_end_event = threading.Event()
|
||||||
self.stream_end_event.set()
|
self.stream_end_event.set()
|
||||||
|
@ -238,6 +241,8 @@ class XMLStream(object):
|
||||||
self.dns_answers = []
|
self.dns_answers = []
|
||||||
|
|
||||||
self.add_event_handler('connected', self._handle_connected)
|
self.add_event_handler('connected', self._handle_connected)
|
||||||
|
self.add_event_handler('session_start', self._start_keepalive)
|
||||||
|
self.add_event_handler('session_end', self._end_keepalive)
|
||||||
|
|
||||||
def use_signals(self, signals=None):
|
def use_signals(self, signals=None):
|
||||||
"""
|
"""
|
||||||
|
@ -615,6 +620,30 @@ class XMLStream(object):
|
||||||
log.warning("Tried to enable TLS, but ssl module not found.")
|
log.warning("Tried to enable TLS, but ssl module not found.")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def _start_keepalive(self, event):
|
||||||
|
"""
|
||||||
|
Begin sending whitespace periodically to keep the connection alive.
|
||||||
|
|
||||||
|
May be disabled by setting:
|
||||||
|
self.whitespace_keepalive = False
|
||||||
|
|
||||||
|
The keepalive interval can be set using:
|
||||||
|
self.whitespace_keepalive_interval = 300
|
||||||
|
"""
|
||||||
|
|
||||||
|
def send_keepalive():
|
||||||
|
if self.send_queue.empty():
|
||||||
|
self.send_raw(' ')
|
||||||
|
|
||||||
|
self.schedule('Whitespace Keepalive',
|
||||||
|
self.whitespace_keepalive_interval,
|
||||||
|
send_keepalive,
|
||||||
|
repeat=True)
|
||||||
|
|
||||||
|
def _end_keepalive(self, event):
|
||||||
|
"""Stop sending whitespace keepalives"""
|
||||||
|
self.scheduler.remove('Whitespace Keepalive')
|
||||||
|
|
||||||
def start_stream_handler(self, xml):
|
def start_stream_handler(self, xml):
|
||||||
"""
|
"""
|
||||||
Perform any initialization actions, such as handshakes, once the
|
Perform any initialization actions, such as handshakes, once the
|
||||||
|
|
Loading…
Reference in a new issue