- detect socket connection state(#109)

This commit is contained in:
liris
2014-09-19 10:42:58 +09:00
parent 7318556f46
commit 35156d2da9
3 changed files with 20 additions and 2 deletions

View File

@@ -207,6 +207,7 @@ ChangeLog
- v0.19.0
- suppress close event message(#107)
- detect socket connection state(#109)
- v0.18.0

View File

@@ -29,7 +29,6 @@ from websocket._core import _parse_url, _create_sec_websocket_key
# Skip test to access the internet.
TEST_WITH_INTERNET = False
# TEST_WITH_INTERNET = True
# Skip Secure WebSocket test.
TEST_SECURE_WS = False
@@ -62,6 +61,9 @@ class SockMock(object):
self.sent.append(data)
return len(data)
def close(self):
pass
class HeaderSockMock(SockMock):
@@ -287,6 +289,20 @@ class WebSocketTest(unittest.TestCase):
with self.assertRaises(ws.WebSocketConnectionClosedException):
sock.recv()
def testClose(self):
sock = ws.WebSocket()
sock.sock = SockMock()
sock.connected = True
sock.close()
self.assertEqual(sock.connected, False)
sock = ws.WebSocket()
s = sock.sock = SockMock()
sock.connected = True
s.add_packet(six.b('\x88\x80\x17\x98p\x84'))
sock.recv()
self.assertEqual(sock.connected, False)
def testRecvContFragmentation(self):
sock = ws.WebSocket()
s = sock.sock = SockMock()

View File

@@ -787,6 +787,7 @@ class WebSocket(object):
"""
if status < 0 or status >= ABNF.LENGTH_16:
raise ValueError("code is invalid range")
self.connected = False
self.send(struct.pack('!H', status) + reason, ABNF.OPCODE_CLOSE)
def close(self, status=STATUS_NORMAL, reason=six.b("")):