connect method

Future<void> connect({
  1. String? minecraftUUID,
  2. String? token,
  3. bool onlyListenMessage = false,
})

Connect to the Universe Chat server

  • minecraftUUID player's minecraft UUID (optional)
  • token rpmtw account token (optional)
  • onlyListenMessage if true, only listen to message event, minecraftUUID and token can be empty minecraftUUID, token cannot both be empty

Implementation

Future<void> connect(
    {String? minecraftUUID,
    String? token,
    bool onlyListenMessage = false}) async {
  _onlyListenMessage = onlyListenMessage;
  final baseOption =
      OptionBuilder().setTransports(['websocket']).disableAutoConnect();

  if (minecraftUUID == null && token == null && !onlyListenMessage) {
    throw ArgumentError('minecraftUUID and token cannot both be null');
  }

  if (minecraftUUID != null) {
    baseOption.setExtraHeaders({'minecraft_uuid': minecraftUUID});
  } else if (token != null) {
    baseOption.setExtraHeaders({'rpmtw_auth_token': token});
  }

  Socket socket = io(universeChatBaseUrl, baseOption.build());
  print('Connecting to Universe Chat server...');
  bool connected = false;
  socket.onConnect((data) {
    print('Connected to Universe Chat server');
    connected = true;
  });
  socket = socket.connect();

  // Wait for connection
  while (!connected) {
    await Future.delayed(Duration(milliseconds: 100));
  }
  // Wait for the connection to be initialized finished
  await Future.delayed(Duration(milliseconds: 1000));

  _socket = socket;
}