initializeSocket static method

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

Implementation

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