connect method

  1. @override
Future<MqttClientConnectionStatus> connect (
  1. String server,
  2. int port
)
override

Connect

Implementation

@override
Future<MqttClientConnectionStatus> connect(String server, int port) {
  final completer = Completer<MqttClientConnectionStatus>();
  // Add the port if present
  Uri uri;
  try {
    uri = Uri.parse(server);
  } on Exception {
    final message = 'MqttWsConnection::The URI supplied for the WS '
        'connection is not valid - $server';
    throw NoConnectionException(message);
  }
  if (uri.scheme != 'ws' && uri.scheme != 'wss') {
    final message = 'MqttWsConnection::The URI supplied for the WS has '
        'an incorrect scheme - $server';
    throw NoConnectionException(message);
  }
  if (port != null) {
    uri = uri.replace(port: port);
  }
  final uriString = uri.toString();
  MqttLogger.log(
      'MqttWsConnection:: WS URL is $uriString, protocols are $protocols');
  try {
    // Connect and save the socket.
    WebSocket.connect(uriString,
            protocols: protocols.isNotEmpty ? protocols : null)
        .then((dynamic socket) {
      client = socket;
      readWrapper = ReadWrapper();
      messageStream = MqttByteBuffer(typed.Uint8Buffer());
      _startListening();
      completer.complete();
    }).catchError((dynamic e) {
      onError(e);
      completer.completeError(e);
    });
  } on Exception {
    final message = 'MqttWsConnection::The connection to the message broker '
        '{$uriString} could not be made.';
    throw NoConnectionException(message);
  }
  return completer.future;
}