connectSocket method
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));
});
}