connect method
Connects to the STOMP server
Implementation
Future<void> connect() async {
if (_state != StompClientState.disconnected) {
throw StompStateException('Cannot connect', _state.name, 'disconnected');
}
_setState(StompClientState.connecting);
try {
// Create stream to server
_stream = await _host.newStream(_serverPeerId, [StompProtocols.stomp], Context());
await _stream!.scope().setService(StompProtocols.serviceName);
await _stream!.setDeadline(DateTime.now().add(_timeout));
// Start frame reading
_startFrameReader();
// Send CONNECT frame
final connectFrame = StompFrameFactory.connect(
host: _hostName,
login: _login,
passcode: _passcode,
);
await _sendFrame(connectFrame);
// Wait for CONNECTED frame
final connectedFrame = await _waitForFrame(StompCommands.connected, _timeout);
await _handleConnectedFrame(connectedFrame);
_setState(StompClientState.connected);
_logger.info('Connected to STOMP server $_serverPeerId');
} catch (e) {
_setState(StompClientState.error);
await _cleanup();
rethrow;
}
}