connect method

Future connect()

Implementation

Future connect() async {
  if (uri == null || port == null || uid == null) {
    throw IOException;
  }

  channel = WebSocket(Uri.parse('${useSsl ? 'wss' : 'ws'}://$uri:$port'),
      backoff: ConstantBackoff(Duration(seconds: 10)),
      binaryType: 'arraybuffer');

  channel!.connection.listen((event) {
    if (event.runtimeType == Connected || event.runtimeType == Reconnected) {
      sendLoginMsg();
      onConnectionStatusChanged(
          event.runtimeType == Connected ? 'Connected' : 'Reconnected');
    } else {
      onConnectionStatusChanged(event.runtimeType.toString());
    }
  });

  channel!.messages.listen((message) {
    Uint8List data = message;
    if (data[0] == PING_TYPE) {
      sendPong();
    } else if (data[0] == REPLY_BODY) {
      var message = data.sublist(1, data.length);
      replybody.Model info = replybody.Model();
      info.mergeFromBuffer(message);
      print(info.toProto3Json().toString());
    } else if (data[0] == Message_TYPE) {
      var message = data.sublist(1, data.length);
      messages.Model model = messages.Model();
      model.mergeFromBuffer(message);
      print(model.toProto3Json().toString());
      onMessageReceived(model);
    }
  }, onError: (error, StackTrace trace) {
    channel = null;
    onConnectionStatusChanged('Disconnected');
  }, onDone: () {
    channel = null;
    onConnectionStatusChanged('Disconnected');
  }, cancelOnError: true);
}