Implement pong
This commit is contained in:
parent
648b713955
commit
6feb0ee2f3
1 changed files with 15 additions and 6 deletions
|
@ -14,6 +14,7 @@ class Client():
|
||||||
self.publicKey = ''
|
self.publicKey = ''
|
||||||
self.privateKey = ''
|
self.privateKey = ''
|
||||||
self.hashMethod = 'sha1'
|
self.hashMethod = 'sha1'
|
||||||
|
self.pongTimer = 0
|
||||||
self.supportedMethods = 0
|
self.supportedMethods = 0
|
||||||
self.tellduscore = TelldusCore()
|
self.tellduscore = TelldusCore()
|
||||||
self.serverList = ServerList()
|
self.serverList = ServerList()
|
||||||
|
@ -56,23 +57,28 @@ class Client():
|
||||||
})
|
})
|
||||||
|
|
||||||
self.socket.write(self.signedMessage(msg))
|
self.socket.write(self.signedMessage(msg))
|
||||||
|
self.pongTimer = time.time()
|
||||||
while(1):
|
while(1):
|
||||||
try:
|
try:
|
||||||
resp = self.socket.read(1024)
|
resp = self.socket.read(1024)
|
||||||
except ssl.SSLError:
|
except ssl.SSLError:
|
||||||
# Timeout, try again
|
# Timeout, try again after some maintenance
|
||||||
# TODO(micke): Check pong timer here
|
if (time.time() - self.pongTimer >= 360): # No pong received
|
||||||
|
print("No pong received, disconnecting")
|
||||||
|
break
|
||||||
|
|
||||||
continue
|
continue
|
||||||
if (resp == ''):
|
if (resp == ''):
|
||||||
print("no response")
|
print("no response")
|
||||||
break
|
break
|
||||||
continue
|
|
||||||
|
|
||||||
envelope = LiveMessage.fromByteArray(resp)
|
envelope = LiveMessage.fromByteArray(resp)
|
||||||
if (envelope.verifySignature(self.hashMethod, self.privateKey)):
|
if (not envelope.verifySignature(self.hashMethod, self.privateKey)):
|
||||||
self.handleMessage(LiveMessage.fromByteArray(envelope.argument(0).stringVal))
|
|
||||||
else:
|
|
||||||
print "Signature failed"
|
print "Signature failed"
|
||||||
|
continue
|
||||||
|
|
||||||
|
self.pongTimer = time.time()
|
||||||
|
self.handleMessage(LiveMessage.fromByteArray(envelope.argument(0).stringVal))
|
||||||
|
|
||||||
def handleCommand(self, args):
|
def handleCommand(self, args):
|
||||||
if (args['action'].stringVal == 'turnon'):
|
if (args['action'].stringVal == 'turnon'):
|
||||||
|
@ -107,6 +113,9 @@ class Client():
|
||||||
self.handleCommand(message.argument(0).dictVal)
|
self.handleCommand(message.argument(0).dictVal)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if (message.name() == "pong"):
|
||||||
|
return
|
||||||
|
|
||||||
print "Did not understand: %s" % message.toByteArray()
|
print "Did not understand: %s" % message.toByteArray()
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue