crdt_socket_sync 0.2.0 copy "crdt_socket_sync: ^0.2.0" to clipboard
crdt_socket_sync: ^0.2.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,
    plugins: [
      ServerAwarenessPlugin(),
    ],
  );

  _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);
  }
}
1
likes
150
points
20
downloads

Publisher

verified publishermattiapispisa.it

Weekly Downloads

Conflict-free replicated data type (CRDT) - Socket sync implementation provided in dart

Homepage
Repository (GitHub)
View/report issues

Topics

#crdt #socket #sync #fugue #hlc

Documentation

API reference

License

MIT (license)

Dependencies

crdt_lf, hlc_dart, web_socket_channel

More

Packages that depend on crdt_socket_sync