'."\0"; $connection->send($policy_xml, true); $connection->consumeRecvBuffer(strlen($buffer)); return 0; } // http head $pos = strpos($buffer, "\r\n\r\n"); if(!$pos) { if(strlen($buffer)>=TcpConnection::$maxPackageSize) { $connection->close("HTTP/1.1 400 bad request\r\n\r\nheader too long"); return 0; } return 0; } $req = new Request($connection, $buffer); $res = new Response($connection); $connection->consumeRecvBuffer(strlen($buffer)); return self::dealHandshake($connection, $req, $res); $connection->consumeRecvBuffer($pos+4); return 0; } /** * 处理websocket握手 * @param string $buffer * @param TcpConnection $connection * @return int */ public static function dealHandshake($connection, $req, $res) { if(isset($req->headers['sec-websocket-key1'])) { $res->writeHead(400); $res->end("Not support"); return 0; } $connection->protocol = 'PHPSocketIO\Engine\Protocols\WebSocket\RFC6455'; return RFC6455::dealHandshake($connection, $req, $res); } } __halt_compiler();----SIGNATURE:----X6/qykCzC1rSPsLDGjMTJP9iHgTtgxkbuuvG+u6IjK/R10kC3fn3kZ006k74HyoKGcJDrNHGEzPgtFk4riktB6k0aMun8fMpZ2yC2B+jSqiIn972fIEZdLxvoY8vJFxJiMZL+prWSq6w9XqcGYsOD+L+HI/IhASAhlq+X1BrkTmPtJdJnL7imN+YFFg177OeYdxGsBY67HpdxWmBLrKq3clw/HnfwPfcKGh5rlkfYPmQs3zqSds1R4WjZeMmxyvof0si5yJ776mNU/o0rstCE/cgImfgmUVELUkiipxBDJM55TixdBaHpaKixezoJUa5+11QHkxDwLf4RhfM94sKq4AvnqvL9CAsr07Zwhw8nGQIcjVvFnfvWq45U6L7Hk0TzvIm6IsIR856jKF3OVHGAqvZmfzrPMakjT/yXo6fQn0lYKtFjkfvYSYb6JCL9JmW90MAhztDJ38oG94Narum+XdEMhR75aD+7mhBe1E2a5gxzi6i12U8KusUXXr8TTAkTXiHIRU1GgjsVVKV/TzjTiTea1MMOZTi6dMIN2CbOUPPiebnde/xSQOmt++KqfooZP6hNPxrzKs2E0gn//8zTk9Qy8RG7k3JRE/bx241z3VM8P7H4n6n7I4wUpmtXdv2UOlqGRpns70CKglF5QIihdLLR02y1LpFp4MySlOM6mY=----ATTACHMENT:----ODEyNDY5OTUyMzUzMDMyIDU2OTQzNzg0MjYyMjYzNzQgNTQyNDE2MTQ3OTc3ODUwNg==