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,
})

连接 devicename 设备名 appVersion app版本 osVersion 系统版本 packageName 包名 deviceid 设备id language 语言 channelName 渠道名

Implementation

Future connect({
  String? devicename,
  String? appVersion,
  String? osVersion,
  String? packageName,
  String? deviceid,
  String? language,
  String? channelName,
}) async {
  if (uri == null || port == null || uid == null) {
    throw IOException;
  }

  this.devicename = devicename;
  this.appVersion = appVersion;
  this.osVersion = osVersion;
  this.packageName = packageName;
  this.deviceid = deviceid;
  this.language = language;
  this.channelName = channelName;

  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);
    } else if (data[0] == Message_TYPE) {
      var message = data.sublist(1, data.length);
      messages.Model model = messages.Model();
      model.mergeFromBuffer(message);
      onMessageReceived(model);
    }
  }, onError: (error, StackTrace trace) {
    channel = null;
    onConnectionStatusChanged('Disconnected');
  }, onDone: () {
    channel = null;
    onConnectionStatusChanged('Disconnected');
  }, cancelOnError: true);
}