Aerys\Websocket\Rfc6455Endpoint::onParsedControlFrame PHP Method

onParsedControlFrame() private method

private onParsedControlFrame ( Aerys\Websocket\Rfc6455Client $client, array $parseResult )
$client Aerys\Websocket\Rfc6455Client
$parseResult array
    private function onParsedControlFrame(Rfc6455Client $client, array $parseResult)
    {
        // something went that wrong that we had to shutdown our readWatcher... if parser has anything left, we don't care!
        if (!$client->readWatcher) {
            return;
        }
        list($data, $opcode) = $parseResult;
        switch ($opcode) {
            case self::OP_CLOSE:
                if ($client->closedAt) {
                    unset($this->closeTimeouts[$client->id]);
                    $this->unloadClient($client);
                } else {
                    if (\strlen($data) < 2) {
                        return;
                        // invalid close reason
                    }
                    $code = current(unpack('S', substr($data, 0, 2)));
                    $reason = substr($data, 2);
                    @stream_socket_shutdown($client->socket, STREAM_SHUT_RD);
                    \Amp\cancel($client->readWatcher);
                    $client->readWatcher = null;
                    resolve($this->doClose($client, $code, $reason));
                }
                break;
            case self::OP_PING:
                $this->compile($client, $data, self::OP_PONG);
                break;
            case self::OP_PONG:
                // We need a min() here, else someone might just send a pong frame with a very high pong count and leave TCP connection in open state... Then we'd accumulate connections which never are cleaned up...
                $client->pongCount = min($client->pingCount, $data);
                break;
        }
    }