start method
Start the server
Returns true if the server is started, false otherwise
- Check if the server is already running
- Start the server
- Upgrade the request to a WebSocket connection
Implementation
@override
Future<bool> start() async {
if (_isRunning) {
return true;
}
try {
_server = await _serverFactory();
_addServerEvent(
ServerEvent(
type: ServerEventType.started,
message: 'Server started on $host:$port',
),
);
_isRunning = true;
_server!.listen((request) {
if (_serverTransformer.isUpgradeRequest(request)) {
_serverTransformer.upgrade(request).then(_handleWebSocket);
} else {
request.response.statusCode = HttpStatus.badRequest;
request.response.close();
}
});
return true;
} catch (e) {
_addServerEvent(
ServerEvent(
type: ServerEventType.error,
message: 'Failed to start server: $e',
),
);
return false;
}
}