From 950660acd8327d3485e2a00399c4eec3c7d50fcd Mon Sep 17 00:00:00 2001 From: Andrea Agili Date: Wed, 25 Sep 2019 14:10:47 +0200 Subject: [PATCH 1/2] :sparkles: send binary data --- websocket_server/websocket_server.py | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/websocket_server/websocket_server.py b/websocket_server/websocket_server.py index 96c658b..0f39332 100644 --- a/websocket_server/websocket_server.py +++ b/websocket_server/websocket_server.py @@ -254,22 +254,19 @@ def send_text(self, message, opcode=OPCODE_TEXT): their usage cases are limited - when we don't know the payload length. """ + # Validate message if isinstance(message, bytes): - message = try_decode_UTF8(message) # this is slower but ensures we have UTF-8 - if not message: - logger.warning("Can\'t send message, message is not valid UTF-8") - return False - elif sys.version_info < (3,0) and (isinstance(message, str) or isinstance(message, unicode)): - pass + OPCODE_TEXT = 0x02 + payload = message elif isinstance(message, str): - pass + OPCODE_TEXT = 0x01 + payload = encode_to_UTF8(message) else: - logger.warning('Can\'t send message, message has to be a string or bytes. Given type is %s' % type(message)) + logger.warning("[!] Can't send message, message has to be a string or bytes. Given type is {}".format(type(message))) return False - header = bytearray() - payload = encode_to_UTF8(message) + header = bytearray() payload_length = len(payload) # Normal payload From 98c12af6fa2af9999318253c0c1ae938c5568a02 Mon Sep 17 00:00:00 2001 From: Andrea Agili Date: Wed, 25 Sep 2019 15:17:06 +0200 Subject: [PATCH 2/2] :bug: fix opcode in binary send --- websocket_server/websocket_server.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/websocket_server/websocket_server.py b/websocket_server/websocket_server.py index 0f39332..4bc7163 100644 --- a/websocket_server/websocket_server.py +++ b/websocket_server/websocket_server.py @@ -257,10 +257,10 @@ def send_text(self, message, opcode=OPCODE_TEXT): # Validate message if isinstance(message, bytes): - OPCODE_TEXT = 0x02 + opcode = OPCODE_BINARY payload = message elif isinstance(message, str): - OPCODE_TEXT = 0x01 + opcode = OPCODE_TEXT payload = encode_to_UTF8(message) else: logger.warning("[!] Can't send message, message has to be a string or bytes. Given type is {}".format(type(message)))