start method
Start the HTTP server
Implementation
Future<void> start() async {
_logger.info('Starting StreamableHTTP server...');
try {
_logger.info('Attempting to bind to ${config.host}:${config.port}');
_server = await _startServer(config.port);
_logger.info('StreamableHTTP server listening on ${config.host}:${config.port}');
} catch (e) {
_logger.error('Failed to start server on port ${config.port}: $e');
// Try fallback ports
for (final fallbackPort in config.fallbackPorts) {
try {
_logger.info('Trying fallback port: $fallbackPort');
_server = await _startServer(fallbackPort);
_logger.info('StreamableHTTP server listening on ${config.host}:$fallbackPort');
break;
} catch (e) {
_logger.error('Failed to start server on fallback port $fallbackPort: $e');
}
}
if (_server == null) {
final errorMsg = 'Failed to start StreamableHTTP server on any available port';
_logger.error(errorMsg);
_closeCompleter.completeError(errorMsg);
throw Exception(errorMsg);
}
}
}