connect method

Future connect({
  1. String? devicename,
  2. String? appVersion,
  3. String? osVersion,
  4. String? packageName,
  5. String? deviceid,
  6. String? language,
  7. String? channelName,
})

Implementation

Future connect(
    {String? devicename,
    String? appVersion,
    String? osVersion,
    String? packageName,
    String? deviceid,
    String? language,
    String? channelName}) async {
  this.devicename = devicename;
  this.appVersion = appVersion;
  this.osVersion = osVersion;
  this.packageName = packageName;
  this.deviceid = deviceid;
  this.language = language;
  this.channelName = channelName;

  if (uri == null || port == null || uid == null) {
    throw IOException;
  }
  Socket.connect(uri, port!).then((Socket sock) {
    sock.listen((data) async {
      int l = (data[1] & 0xff);
      int h = (data[2] & 0xff);
      int length = (l | h << 8);
      if (data[0] == PING_TYPE) {
        sendPong();
      } else if (data[0] == REPLY_BODY) {
        var message = data.sublist(3, length + 3);
        replybody.Model info = replybody.Model();
        info.mergeFromBuffer(message);
      } else if (data[0] == Message_TYPE) {
        var message = data.sublist(3, length + 3);
        messages.Model model = messages.Model();
        model.mergeFromBuffer(message);
        onMessageReceived(model);
      }
    }, onError: (error, StackTrace trace) {
      socket = null;
      if (!timer.isActive()) {
        timer.setTotalTime(12000);
        timer.startCountDown();
      }
      onConnectionStatusChanged(false);
    }, onDone: () {
      socket = null;
      if (endCode != "999") {
        timer.setTotalTime(12000);
        timer.startCountDown();
      }
      onConnectionStatusChanged(false);
    }, cancelOnError: true);
    socket = sock;
    sendLoginMsg();
  }).catchError((e) {
    socket = null;
    timer.setTotalTime(12000);
    timer.startCountDown();
    onConnectionStatusChanged(false);
  });
}