コード例 #1
0
ファイル: HttpRequest.php プロジェクト: stegru/php-websockets
 /**
  * Creates a HttpRequest instance using the given string.
  *
  * @param string $requestBuffer The HTTP request.
  * @return HttpRequest
  */
 public static function FromString($requestBuffer)
 {
     $req = new HttpRequest();
     $req->requestBuffer = $requestBuffer;
     $req->gotHeaders();
     return $req;
 }
コード例 #2
0
 /**
  * Tests the HTTP headers are parsed correctly.
  */
 public function testParseHeaders()
 {
     $requestLine = "GET / HTTP/1.1";
     $headerArray = ["Header1" => "Value1", "Header2" => "Value2", "Header3" => "Value3", "Header4" => "Value4"];
     $requestString = self::BuildRequest($requestLine, $headerArray);
     $req = HttpRequest::FromString($requestString);
     self::assertEquals($headerArray, $req->getHeaders());
     self::assertEquals($requestLine, $req->getRequestLine());
 }
コード例 #3
0
    /**
     * Tests a good handshake.
     */
    public function testValidateGoodRequest()
    {
        // from the RFC
        $requestString = <<<REQ
GET / HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Origin: http://example.com
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13

REQ;
        $req = HttpRequest::FromString($requestString);
        $webSocketRequest = new WebSocketRequest($req);
        self::assertTrue($webSocketRequest->validate());
    }
コード例 #4
0
 /**
  * Accepts a new connection.
  *
  * @param resource $listenerStream The socket created by stream_socket_server
  */
 private function newConnection($listenerStream)
 {
     $stream = stream_socket_accept($listenerStream);
     // The first bit of data from the client should be a HTTP request.
     $req = HttpRequest::FromStream($stream, [$this, 'gotHeaders']);
     // Send the stream to the HTTP request handler.
     $this->streams->addStream($stream, null, $req);
 }