ClientSession constructor

ClientSession({
  1. required String id,
  2. required TransportConnection connection,
  3. required CRDTServerRegistry serverRegistry,
  4. Compressor? compressor,
  5. List<ServerSyncPlugin> plugins = const [],
})

Constructor

Implementation

ClientSession({
  required this.id,
  required TransportConnection connection,
  required CRDTServerRegistry serverRegistry,
  Compressor? compressor,
  List<ServerSyncPlugin> plugins = const [],
})  : _connection = connection,
      _serverRegistry = serverRegistry,
      _plugins = plugins,
      _sessionEventController = StreamController<SessionEvent>.broadcast(),
      _messageCodec = CompressedCodec<Message>(
        PluginAwareMessageCodec.fromPlugins(
          plugins: plugins,
          defaultCodec: JsonMessageCodec<Message>(
            toJson: (message) => message.toJson(),
            fromJson: Message.fromJson,
          ),
        ),
        compressor: compressor ?? NoCompression.instance,
      ) {
  _connection.incoming.listen(
    _handleData,
    onError: _handleConnectionError,
    onDone: _handleConnectionClosed,
  );

  _startHeartbeatMonitoring();
  for (final plugin in _plugins) {
    plugin.onNewSession(this);
  }
}