Phastlight\Module\HTTP\Main::listen PHP Method

listen() public method

public listen ( $port, $host = '127.0.0.1', $backlog = 100 )
    public function listen($port, $host = '127.0.0.1', $backlog = 100)
    {
        $this->port = $port;
        $this->host = $host;
        $self = $this;
        $system = $this->getSystem();
        $this->server = uv_tcp_init();
        $request = $self->getServerRequest();
        $response = $self->getServerResponse();
        $requestListener = $self->getRequestListener();
        uv_tcp_bind($this->server, uv_ip4_addr($host, $port));
        uv_listen($this->server, $backlog, function ($server) use($self, &$request, &$response, &$requestListener) {
            $client = uv_tcp_init();
            uv_accept($server, $client);
            uv_read_start($client, function ($socket, $nread, $buffer) use($self, &$request, &$response, &$requestListener) {
                $self->generateServerVariables($buffer, $socket);
                call_user_func_array($requestListener, array($request, $response));
                $status_code = $response->getStatusCode();
                $statusMessage = $response->getReasonPhrase();
                $headers = $response->getHeaders();
                $header = "";
                if (count($headers) > 0) {
                    foreach ($headers as $key => $val) {
                        $header .= $key . ": " . $val . "\r\n";
                    }
                }
                $output = $response->getData();
                $buffer = "HTTP/1.1 {$status_code} {$statusMessage}\r\n{$header}\r\n{$output}";
                uv_write($socket, $buffer);
                uv_close($socket);
            });
        });
    }