handshake method

void handshake({
  1. VoidCallback? callback,
})

Implementation

void handshake({VoidCallback? callback}) {
  if (_advice.reconnect == Advice.none) return;
  if (state != FayeClientState.unconnected) return;

  _state = FayeClientState.connecting;

  _initWebSocketChannel();

  _logger.info('Initiating handshake with $baseUrl');

  _sendMessage(
    Message(
      Channel.handshake,
      version: bayeuxVersion,
      supportedConnectionTypes: ['websocket'],
    ),
    onResponse: (response) {
      if (response.successful == true) {
        _state = FayeClientState.connected;
        _clientId = response.clientId;

        _logger.info('Handshake successful: $_clientId');
        _subscribeChannels(_channels.keys, force: true);
        callback?.call();
      } else {
        _logger.info('Handshake unsuccessful');
        setTimeout(
          Duration(seconds: retry),
          () => handshake(callback: callback),
        );
        _state = FayeClientState.unconnected;
      }
    },
  );
}