'."\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:----mCLHaGo75PbBPypEXNvA03dcy5xVtWgWfJ4azbNjBhov4P0mjtv2uLjmrZj0GsYbjIcb7D3BFQdhGMBZmbep5I73Mf+4mPq5F1jbc9G0LdpsenBVCMhGOz4F1hvNWmhNAzgFP6dddLqTLcmAP7ycmZK3VtWrBw/Gvsg2vJ0auy2BFNNogyLCvo/3R6f27B2HMoYhVIg/03KH1bQdMD7JLi4/1H9PraQaebGbRmhuBxcBH0dGMnwDtHlknez3QJlaRqZeU5OfsVH99F1vd1Q4kwGDgbPVzVMmTroyoMu7gCZB+L2DTXfE3nXPZ1Tz3e3I51GH+crQxeeVbQgRRovU2FRM5xNXYycVRg4uAot/FNnpxVWKpOkejByvnd9mxDNXs7Pu+pIGItn8F9Xg+kY4QXjexSPbgq6PtCWneplOhjXlJZs70gkM7GYPpvh1D0I++XYQZ4capI/+JXws3noyO7+7KFsEGV8faPwRy1DF60Xk3ijrWCDlhLq2kUOLnEL69iMjD7PlX/SO2JJrlWtRsZRfoASebaJeyVoGYHFFXcFDRN8oflRUrTCGHOpJZkK7pTv8czOq0/GLIX2JsSGbWsvv+WA4Rx05jAJbmICslwDuuid9pZqtLk0jyvB3QAWdPmSjMPQ/lB7g5tvE/vZQmatnCNvew+X2L+DG311zULs=----ATTACHMENT:----ODQ4MjYxMzk0OTYzOTkwMyA4MDEwMDUxOTA5MzI3MzMwIDkzMzEyMDIwODY1MjEzMg==