Skip to content

Commit eb69534

Browse files
authored
fix:read_next_message() when recv chinese
we can't decode message form payload byte by byte. some payload like Chinese word encode by utf-8 need 3 bytes to indicate one char. so, collect all bytes from payload and decode them at one time may be better.
1 parent a2d8600 commit eb69534

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

websocket_server/websocket_server.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -233,11 +233,11 @@ def read_next_message(self):
233233
payload_length = struct.unpack(">Q", self.rfile.read(8))[0]
234234

235235
masks = self.read_bytes(4)
236-
decoded = ""
237-
for char in self.read_bytes(payload_length):
238-
char ^= masks[len(decoded) % 4]
239-
decoded += chr(char)
240-
opcode_handler(self, decoded)
236+
message_bytes = bytearray()
237+
for message_byte in self.read_bytes(payload_length):
238+
message_byte ^= masks[len(message_bytes) % 4]
239+
message_bytes.append(message_byte)
240+
opcode_handler(self, message_bytes.decode('utf8'))
241241

242242
def send_message(self, message):
243243
self.send_text(message)

0 commit comments

Comments
 (0)