connectSocket method

dynamic connectSocket(
  1. String ticketId,
  2. List<EventHandler> handlers
)

Implementation

connectSocket(String ticketId, List<EventHandler> handlers) {
  if (kDebugMode) {
    print('ChatSocketManager connected');
  }
  WebSocket.connect(
    ApiUrls.socketURL,
    protocols: [ticketId],
  ).then((value) {
    _socket = value;
    if (kDebugMode) {
      print('socket:: ${value.readyState}, ${value.pingInterval}');
    }
    _socket?.listen((e) {
      if (kDebugMode) {
        print('socket:: runtimeType ${e.runtimeType}');
      }
      var response = jsonDecode(e);
      var event = response['event'];
      var data = response['data'];
      if (kDebugMode) {
        print('socket:: ${data.runtimeType}, $event');
      }
      for (var element in handlers) {
        if (kDebugMode) {
          print('socket:: isEvent  ${element.eventName == event}');
        }
        if (element.eventName == event) {
          element.handler(data);
        }
      }
    });
  }).catchError((e, _) {
    Future.delayed(
        const Duration(seconds: 1), () => connectSocket(ticketId, handlers));
  });
}