diff --git a/kmqtt-broker/src/commonMain/kotlin/io/github/davidepianca98/socket/tcp/WebSocket.kt b/kmqtt-broker/src/commonMain/kotlin/io/github/davidepianca98/socket/tcp/WebSocket.kt index c1a4ba8a136b8a8dbca70d348e553a27d2125465..c8168c7cbfd57691e123274658fea8e3583e458e 100644 --- a/kmqtt-broker/src/commonMain/kotlin/io/github/davidepianca98/socket/tcp/WebSocket.kt +++ b/kmqtt-broker/src/commonMain/kotlin/io/github/davidepianca98/socket/tcp/WebSocket.kt @@ -85,9 +85,12 @@ internal class WebSocket(private val socket: Socket) : SocketInterface { private fun decodeBinary(length: ULong, key: UByteArray): UByteArray { val decoded = ByteArrayOutputStream() - for (i in 0 until length.toInt()) { - decoded.write(currentReceivedData.read() xor key[i and 0x3]) + + val bytes = currentReceivedData.readBytes(length.toInt()).mapIndexed { index, uByte -> + uByte xor key[index and 0x3] } + decoded.write(bytes.toUByteArray()) + currentReceivedData.shift() return decoded.toByteArray() }