public function receiveFrame(Frame $frame)
    {
        if ('ERROR' === $frame->command) {
            throw new ServerErrorException($frame);
        }

        if ($this->state->isConnecting()) {
            if ('CONNECTED' !== $frame->command) {
                throw new InvalidFrameException(sprintf("Received frame with command '%s', expected 'CONNECTED'.", $frame->command));
            }

            $this->state->doneConnecting(
                $frame->getHeader('session'),
                $frame->getHeader('server')
            );

            return new ConnectionEstablishedCommand();
        }

        if ('CONNECTED' === $frame->command) {
            throw new InvalidFrameException(sprintf("Received 'CONNECTED' frame outside a connecting window."));
        }

        if ($this->state->isDisconnecting()) {
            if ('RECEIPT' === $frame->command && $this->state->isDisconnectionReceipt($frame->getHeader('receipt-id'))) {
                $this->state->doneDisconnecting();

                return new CloseCommand();
            }
        }

        return new NullCommand();
    }
public function receiveFrame(Frame $frame)
    {
        if ('ERROR' === $frame->command) {
            throw new ServerErrorException($frame);
        }

        if ($this->state->isConnecting()) {
            if ('CONNECTED' !== $frame->command) {
                throw new InvalidFrameException(sprintf("Received frame with command '%s', expected 'CONNECTED'.", $frame->command));
            }

            $this->state->doneConnecting(
                $frame->getHeader('session'),
                $frame->getHeader('server')
            );

            return new ConnectionEstablishedCommand();
        }

        if ('CONNECTED' === $frame->command) {
            throw new InvalidFrameException(sprintf("Received 'CONNECTED' frame outside a connecting window."));
        }

        if ($this->state->isDisconnecting()) {
            if ('RECEIPT' === $frame->command && $this->state->isDisconnectionReceipt($frame->getHeader('receipt-id'))) {
                $this->state->doneDisconnecting();

                return new CloseCommand();
            }
        }

        return new NullCommand();
    }
public function receiveFrame ( Frame $ frame ) { if ( 'ERROR' === $ frame -> command ) { throw new ServerErrorException ( $ frame ) ; } if ( $ this -> state -> isConnecting ( ) ) { if ( 'CONNECTED' !== $ frame -> command ) { throw new InvalidFrameException ( sprintf ( "Received frame with command '%s', expected 'CONNECTED'." , $ frame -> command ) ) ; } $ this -> state -> doneConnecting ( $ frame -> getHeader ( 'session' ) , $ frame -> getHeader ( 'server' ) ) ; return new ConnectionEstablishedCommand ( ) ; } if ( 'CONNECTED' === $ frame -> command ) { throw new InvalidFrameException ( sprintf ( "Received 'CONNECTED' frame outside a connecting window." ) ) ; } if ( $ this -> state -> isDisconnecting ( ) ) { if ( 'RECEIPT' === $ frame -> command && $ this -> state -> isDisconnectionReceipt ( $ frame -> getHeader ( 'receipt-id' ) ) ) { $ this -> state -> doneDisconnecting ( ) ; return new CloseCommand ( ) ; } } return new NullCommand ( ) ; }
Feed frame from the server

@return An array of commands to be executed by the caller.
Feed frame from the server