@@ -208,6 +208,7 @@ ChangeLog
|
|||||||
|
|
||||||
- suppress close event message(#107)
|
- suppress close event message(#107)
|
||||||
- detect socket connection state(#109)
|
- detect socket connection state(#109)
|
||||||
|
- support for code and reason in on_close callback(#111 )
|
||||||
|
|
||||||
- v0.18.0
|
- v0.18.0
|
||||||
|
|
||||||
|
@@ -131,7 +131,7 @@ class WebSocketApp(object):
|
|||||||
if self.sock:
|
if self.sock:
|
||||||
raise WebSocketException("socket is already opened")
|
raise WebSocketException("socket is already opened")
|
||||||
thread = None
|
thread = None
|
||||||
break_on_close_op = False
|
close_frmae = None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.sock = WebSocket(self.get_mask_key, sockopt=sockopt, sslopt=sslopt,
|
self.sock = WebSocket(self.get_mask_key, sockopt=sockopt, sslopt=sslopt,
|
||||||
@@ -158,7 +158,7 @@ class WebSocketApp(object):
|
|||||||
if r:
|
if r:
|
||||||
op_code, frame = self.sock.recv_data_frame(True)
|
op_code, frame = self.sock.recv_data_frame(True)
|
||||||
if op_code == ABNF.OPCODE_CLOSE:
|
if op_code == ABNF.OPCODE_CLOSE:
|
||||||
break_on_close_op = True
|
close_frmae = frame
|
||||||
break
|
break
|
||||||
elif op_code == ABNF.OPCODE_PING:
|
elif op_code == ABNF.OPCODE_PING:
|
||||||
self._callback(self.on_ping, frame.data)
|
self._callback(self.on_ping, frame.data)
|
||||||
@@ -179,7 +179,8 @@ class WebSocketApp(object):
|
|||||||
thread.join()
|
thread.join()
|
||||||
self.keep_running = False
|
self.keep_running = False
|
||||||
self.sock.close()
|
self.sock.close()
|
||||||
self._callback(self.on_close,*self._get_close_args(frame.data if break_on_close_op else None))
|
self._callback(self.on_close,
|
||||||
|
*self._get_close_args(close_frame.data if close_frame else None))
|
||||||
self.sock = None
|
self.sock = None
|
||||||
|
|
||||||
def _get_close_args(self,data):
|
def _get_close_args(self,data):
|
||||||
@@ -189,10 +190,12 @@ class WebSocketApp(object):
|
|||||||
# if the on_close callback is "old", just return empty list
|
# if the on_close callback is "old", just return empty list
|
||||||
if not self.on_close or len(inspect.getargspec(self.on_close).args) != 3:
|
if not self.on_close or len(inspect.getargspec(self.on_close).args) != 3:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
if data and len(data) >=2:
|
if data and len(data) >=2:
|
||||||
code = 256*six.byte2int(data[0]) + six.byte2int(data[1])
|
code = 256*six.byte2int(data[0]) + six.byte2int(data[1])
|
||||||
reason = data[2:].decode('utf-8')
|
reason = data[2:].decode('utf-8')
|
||||||
return [code,reason]
|
return [code,reason]
|
||||||
|
|
||||||
return [None,None]
|
return [None,None]
|
||||||
|
|
||||||
def _callback(self, callback, *args):
|
def _callback(self, callback, *args):
|
||||||
|
Reference in New Issue
Block a user