initializeSocket static method

Future<void> initializeSocket({
  1. dynamic initListeners({
    1. required void on(
      1. String event,
      2. dynamic (
        1. dynamic data
        )
      ),
    2. required Socket socket,
    })?,
})

Implementation

static Future<void> initializeSocket({
  Function({
    required Socket socket,
    required void Function(String event, Function(dynamic data)) on,
  })?
  initListeners,
}) async {
  if (_socket?.connected == true) {
    _socket?.disconnect();
  }

  final token = await UFUtils.preferences.readAuthToken();
  _socket = io(
    UFUtils.socketBaseUrl,
    OptionBuilder()
        .setTransports(['websocket'])
        .enableReconnection()
        .enableForceNew()
        .setExtraHeaders({'token': token})
        .setQuery({'EIO': '4', 'transport': 'websocket'})
        .build(),
  );

  // Add logging interceptor
  interceptors.add(SocketLoggingInterceptor());

  setDefaultListeners();
  listenErrorEvents();

  debugPrint("Connecting socket...");
  _socket!.connect();
  initListeners?.call(socket: _socket!, on: on);
}