start method

Future<void> start()

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);
    }
  }
}