onMessage method
void
onMessage(
- dynamic jsMessage
Implementation
void onMessage(dynamic jsMessage) {
final Map<String, dynamic> msg = dartify<Map<String, dynamic>>(jsMessage);
final String event = msg['event'] ?? '';
final String channel = msg['channel'] ?? '';
final Map<String, dynamic> data = msg['data'] ?? {};
String? userId = data['user_id'];
final Map<String, dynamic>? userInfo = data['user_info'];
if (event == 'pusher_internal:subscription_error') {
methodChannel!.invokeMethod(
'onSubscriptionError', {'message': msg['error'], 'error': data});
} else if (event == 'pusher_internal:member_added') {
methodChannel!.invokeMethod('onMemberAdded', {
'channelName': channel,
'user': {
'userId': userId,
'userInfo': userInfo,
}
});
} else if (event == 'pusher_internal:member_removed') {
methodChannel!.invokeMethod('onMemberRemoved', {
'channelName': channel,
'user': {
'userId': userId,
'userInfo': userInfo,
}
});
} else {
if (event == 'pusher_internal:subscription_succeeded') {
if (channel.startsWith('presence-')) {
final presenceChannel = pusher!.channel(channel) as PresenceChannel;
userId = presenceChannel.members.myID;
}
}
methodChannel!.invokeMethod('onEvent', {
'channelName': channel,
'eventName': event,
'data': data,
'userId': userId,
});
}
}