start method
Starts the proxy server on an available port
Implementation
Future<void> start({int preferredPort = 0}) async {
if (_isRunning) return;
await _cacheManager.emptyCache();
try {
if (preferredPort > 0) {
// First try the preferred port
try {
_server = await HttpServer.bind(
InternetAddress.loopbackIPv4,
preferredPort,
);
_port = preferredPort;
} catch (e) {
log('Preferred port $preferredPort unavailable, trying alternatives');
await _findAvailablePort();
}
} else {
// Try to find an available port in the range or let system choose
await _findAvailablePort();
}
_isRunning = true;
log('Video proxy server started on port $_port');
_server!.listen((HttpRequest request) async {
try {
await _handleRequest(request);
} catch (e) {
log('Error handling request: $e');
request.response.statusCode = HttpStatus.internalServerError;
await request.response.close();
}
});
} catch (e) {
log('Failed to start video proxy server: $e');
_isRunning = false;
}
}