walkor 9 gadi atpakaļ
vecāks
revīzija
6df8928b70
2 mainītis faili ar 15 papildinājumiem un 2 dzēšanām
  1. 9 2
      Protocols/Websocket.php
  2. 6 0
      Protocols/Ws.php

+ 9 - 2
Protocols/Websocket.php

@@ -25,7 +25,7 @@ class Websocket implements \Workerman\Protocols\ProtocolInterface
      *
      * @var int
      */
-    const MIN_HEAD_LEN = 6;
+    const MIN_HEAD_LEN = 2;
 
     /**
      * Websocket blob type.
@@ -112,9 +112,13 @@ class Websocket implements \Workerman\Protocols\ProtocolInterface
                     else {
                         $connection->send(pack('H*', '8a00'), true);
                     }
+
                     // Consume data from receive buffer.
                     if (!$data_len) {
                         $connection->consumeRecvBuffer(self::MIN_HEAD_LEN);
+                        if ($recv_len > self::MIN_HEAD_LEN) {
+                            return self::input(substr($buffer, self::MIN_HEAD_LEN), $connection);
+                        }
                         return 0;
                     }
                     break;
@@ -132,6 +136,9 @@ class Websocket implements \Workerman\Protocols\ProtocolInterface
                     //  Consume data from receive buffer.
                     if (!$data_len) {
                         $connection->consumeRecvBuffer(self::MIN_HEAD_LEN);
+                        if ($recv_len > self::MIN_HEAD_LEN) {
+                            return self::input(substr($buffer, self::MIN_HEAD_LEN), $connection);
+                        }
                         return 0;
                     }
                     break;
@@ -143,7 +150,7 @@ class Websocket implements \Workerman\Protocols\ProtocolInterface
             }
 
             // Calculate packet length.
-            $head_len = self::MIN_HEAD_LEN;
+            $head_len = 6;
             if ($data_len === 126) {
                 $head_len = 8;
                 if ($head_len > $recv_len) {

+ 6 - 0
Protocols/Ws.php

@@ -101,6 +101,9 @@ class Ws
                     // Consume data from receive buffer.
                     if (!$data_len) {
                         $connection->consumeRecvBuffer(self::MIN_HEAD_LEN);
+                        if ($recv_len > self::MIN_HEAD_LEN) {
+                            return self::input(substr($buffer, self::MIN_HEAD_LEN), $connection);
+                        }
                         return 0;
                     }
                     break;
@@ -118,6 +121,9 @@ class Ws
                     //  Consume data from receive buffer.
                     if (!$data_len) {
                         $connection->consumeRecvBuffer(self::MIN_HEAD_LEN);
+                        if ($recv_len > self::MIN_HEAD_LEN) {
+                            return self::input(substr($buffer, self::MIN_HEAD_LEN), $connection);
+                        }
                         return 0;
                     }
                     break;