This commit is contained in:
Eran Keydar
2014-10-04 20:29:07 +03:00
parent 6119285352
commit 6858ba08c7

View File

@@ -131,6 +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
try: try:
self.sock = WebSocket(self.get_mask_key, sockopt=sockopt, sslopt=sslopt, self.sock = WebSocket(self.get_mask_key, sockopt=sockopt, sslopt=sslopt,
@@ -157,6 +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
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)
@@ -176,12 +178,8 @@ class WebSocketApp(object):
event.set() event.set()
thread.join() thread.join()
self.keep_running = False self.keep_running = False
self.sock.close() self.sock.close()
try: self._callback(self.on_close,*self._get_close_args(frame.data if break_on_close_op else None))
data = frame.data
except NameError:
data = None
self._callback(self.on_close,*self._get_close_args(data))
self.sock = None self.sock = None
def _get_close_args(self,data): def _get_close_args(self,data):