connect method
Performs a connect to the message broker with an optional username and password for the purposes of authentication. If a username and password are supplied these will override any previously set in a supplied connection message so if you supply your own connection message and use the authenticateAs method to set these parameters do not set them again here.
Implementation
@override
Future<MqttClientConnectionStatus?> connect([
String? username,
String? password,
]) async {
instantiationCorrect = true;
clientEventBus = events.EventBus();
clientEventBus?.on<DisconnectOnNoPingResponse>().listen(
disconnectOnNoPingResponse,
);
clientEventBus?.on<DisconnectOnNoMessageSent>().listen(
disconnectOnNoMessageSent,
);
final connectionHandler = SynchronousMqttServerConnectionHandler(
clientEventBus,
maxConnectionAttempts: maxConnectionAttempts,
reconnectTimePeriod: connectTimeoutPeriod,
socketOptions: socketOptions,
socketTimeout: socketTimeout != null
? Duration(milliseconds: socketTimeout!)
: null,
);
if (useWebSocket) {
connectionHandler.secure = false;
connectionHandler.useWebSocket = true;
connectionHandler.useAlternateWebSocketImplementation =
useAlternateWebSocketImplementation;
if (connectionHandler.useAlternateWebSocketImplementation) {
connectionHandler.securityContext = securityContext;
}
if (websocketHeaders != null) {
connectionHandler.websocketHeaders = websocketHeaders;
}
}
if (secure) {
connectionHandler.secure = true;
connectionHandler.useWebSocket = false;
connectionHandler.useAlternateWebSocketImplementation = false;
connectionHandler.securityContext = securityContext;
}
connectionHandler.onBadCertificate =
onBadCertificate as bool Function(Object certificate)?;
this.connectionHandler = connectionHandler;
return await super.connect(username, password);
}