diff --git a/kmqtt-client/src/commonMain/kotlin/WebSocket.kt b/kmqtt-client/src/commonMain/kotlin/WebSocket.kt
index 15937f7aa545dedff42463cf5b274ea18db1205e..9d599bd637988feccdfbc48dc2cdabd1b772c3ac 100644
--- a/kmqtt-client/src/commonMain/kotlin/WebSocket.kt
+++ b/kmqtt-client/src/commonMain/kotlin/WebSocket.kt
@@ -130,6 +130,11 @@ public class WebSocket(private val socket: SocketInterface, host: String, path:
         return null
     }
 
+    private fun decodePing(length: ULong): UByteArray? {
+        send(decodeBinary(length), 0xA)
+        return null
+    }
+
     private fun decodePong(length: ULong): UByteArray? {
         decodeBinary(length)
         return null
@@ -156,6 +161,7 @@ public class WebSocket(private val socket: SocketInterface, host: String, path:
                 val decoded = when (opcode.toInt()) {
                     0x2 -> decodeBinary(length)
                     0x8 -> decodeClose(length)
+                    0x9 -> decodePing(length)
                     0xA -> decodePong(length)
                     else -> {
                         close()