crdt_socket_sync 0.1.0
crdt_socket_sync: ^0.1.0 copied to clipboard
Conflict-free replicated data type (CRDT) - Socket sync implementation provided in dart
example/main.dart
// ignore_for_file: avoid_print just an example
import 'dart:async';
import 'dart:io';
import 'package:crdt_socket_sync/web_socket_server.dart';
import 'server_registry.dart';
late WebSocketServer server;
void main(List<String> args) async {
print('š Starting CRDT WebSocket Server...');
server = WebSocketServer(
serverFactory: () => HttpServer.bind(InternetAddress.anyIPv4.host, 8080),
serverRegistry: serverRegistry,
);
_setupSigintHandler();
await _startServer();
}
void _setupSigintHandler() {
ProcessSignal.sigint.watch().listen((signal) async {
print('\nā¹ļø Received SIGINT, shutting down gracefully...');
await server.stop();
print('ā
Server stopped.');
exit(0);
});
}
Future<void> _startServer() async {
try {
server.serverEvents.listen((event) {
print('ā” Server event: $event');
});
await server.start();
print('ā
CRDT WebSocket Server started successfully!');
print('š” Listening on ${server.host}:${server.port}');
print('š” Press Ctrl+C to stop the server');
// Keep the server running indefinitely
print('š Server is running... waiting for connections');
final completer = Completer<void>();
await completer.future;
return;
} catch (e) {
print('ā Failed to start server: $e');
exit(1);
}
}