WebSocketClient constructor

WebSocketClient({
  1. required String url,
  2. required CRDTDocument document,
  3. required PeerId author,
  4. Compressor? compressor,
  5. MessageCodec<Message>? messageCodec,
  6. Duration? pingInterval,
  7. Duration? pingTimeout,
  8. int? maxBufferSize,
  9. List<ClientSyncPlugin>? plugins,
  10. DocumentCapabilities? capabilities,
})

Constructor

Implementation

WebSocketClient({
  required this.url,
  required this.document,
  required this.author,
  Compressor? compressor,
  MessageCodec<Message>? messageCodec,
  Duration? pingInterval,
  Duration? pingTimeout,
  int? maxBufferSize,
  super.plugins,
  super.capabilities,
})  : _messageController = StreamController<Message>.broadcast(),
      _pingInterval = pingInterval ?? Protocol.pingInterval,
      _pingTimeout = pingTimeout ?? Protocol.pingTimeout,
      _maxBufferSize = maxBufferSize ?? Protocol.maxBufferSize,
      _transportFactory =
          (() => Transport.create(WebSocketChannelConnector(url))) {
  _syncManager = SyncManager(document: document, client: this);
  _messageCodec = CompressedCodec<Message>(
    PluginAwareMessageCodec.fromPlugins(
      plugins: plugins,
      defaultCodec: messageCodec ??
          JsonMessageCodec<Message>(
            toJson: (message) => message.toJson(),
            fromJson: (json) =>
                SyncMessage.fromJson(json) ?? Message.fromJson(json),
          ),
    ),
    compressor: compressor ?? NoCompression.instance,
  );

  messages.listen(_handleMessage);
}