Laravoole\Wrapper\SwooleWebSocketWrapper::onHandShake PHP Method

onHandShake() public method

public onHandShake ( swoole_http_request $request, swoole_http_response $response )
$request swoole_http_request
$response swoole_http_response
    public function onHandShake(swoole_http_request $request, swoole_http_response $response)
    {
        $protocol = false;
        if (isset($request->header['sec-websocket-protocol'])) {
            $protocols = preg_split('~,\\s*~', $request->header['sec-websocket-protocol']);
            foreach ($protocols as $protocol) {
                if (isset(static::$protocolCodecs[$protocol])) {
                    break;
                }
            }
            if ($protocol) {
                $response->header('Sec-WebSocket-Protocol', $protocol);
            }
        }
        if (!$protocol) {
            $protocol = $this->defaultProtocol;
        }
        $secKey = $request->header['sec-websocket-key'];
        $secAccept = base64_encode(pack('H*', sha1($secKey . '258EAFA5-E914-47DA-95CA-C5AB0DC85B11')));
        foreach (["Upgrade" => "websocket", "Connection" => "Upgrade", "Sec-WebSocket-Version" => "13", "Sec-WebSocket-Accept" => $secAccept] as $k => $v) {
            $response->header($k, $v);
        }
        $response->status(101);
        $laravooleRequest = new Request($request->fd);
        foreach ($request as $k => $v) {
            $laravooleRequest->{$k} = $v;
        }
        $this->connections[$request->fd] = ['request' => $laravooleRequest, 'protocol' => static::$protocolCodecs[$protocol]];
        $this->unfinished[$request->fd] = '';
        return true;
    }