trigger method
void
trigger(
- String event, {
- dynamic payload,
- String? ref,
})
Implementation
void trigger(String event, {dynamic payload, String? ref}) {
final events = [
ChannelEvents.close,
ChannelEvents.error,
ChannelEvents.leave,
ChannelEvents.join
].map((e) => e.eventName()).toSet();
if (ref != null && events.contains(event) && ref != joinRef()) {
return;
}
final handledPayload = onMessage(event, payload, ref: ref);
if (payload != null && handledPayload == null) {
throw 'channel onMessage callbacks must return the payload, modified or unmodified';
}
final filtered = _bindings.where((bind) {
/// bind all realtime events
if (bind.event == '*') {
return event == (payload is Map ? payload['type'] : payload);
} else {
return bind.event == event;
}
});
for (final bind in filtered) {
bind.callback(handledPayload, ref: ref);
}
}