handleMessage method
void
handleMessage([
- dynamic messageEvent
Implementation
void handleMessage([dynamic messageEvent]) {
String? message;
if (globalSocketPlatform is IoSocketPlatform) {
message = messageEvent;
} else {
message = messageEvent.data;
}
if (message == "#1") {
sendOrAdd('#2');
} else {
// print('Message received: $message');
var map = jsonDecode(message!);
var data = map['data'];
int? rid = map['rid'];
int? cid = map['cid'];
String? event = map['event'];
// print('Event: $event, rid: $rid, cid: $cid, data: $data');
switch (Parser.parse(data, rid, cid, event)) {
case ParseResult.ISAUTHENTICATED:
// print('IS authenticated got called');
id = data['id'] as String?;
bool? auth = data['isAuthenticated'] as bool?;
if (listener != null) {
listener!.onAuthentication(this, auth);
}
subscribeChannels();
break;
case ParseResult.PUBLISH:
handlePublish(data['channel'] as String?, data['data']);
// print('Publish got called');
break;
case ParseResult.REMOVETOKEN:
authToken = null;
// print('Removetoken got called');
break;
case ParseResult.SETTOKEN:
if (listener != null) {
listener!.onSetAuthToken(data['token'] as String?, this);
}
// print('Set token got called');
break;
case ParseResult.EVENT:
if (hasEventAck(event)) {
handleEmitAck(event, data, ack(cid));
} else {
handleEmit(event, data);
}
break;
case ParseResult.ACKRECEIVE:
// print('Ack receive got called');
if (_acks.containsKey(rid)) {
var mapObj = _acks[rid!];
_acks.remove(rid);
if (mapObj != null) {
AckCall fn = mapObj[1];
if (fn != null) {
fn(mapObj[0] as String, map['error'], map['data']);
} else {
// print('Ack function is null');
}
}
}
break;
default:
throw new RangeError('Unknown ParseResult');
}
}
}