ApplicationMessageHub class

An object that sends and receives messages between ApplicationChannels.

You use this object to share information between isolates. Each ApplicationChannel has a property of this type. A message sent through this object is received by every other channel through its hub.

To receive messages in a hub, add a listener via listen. To send messages, use add.

For example, an application may want to send data to every connected websocket. A reference to each websocket is only known to the isolate it established a connection on. This data must be sent to each isolate so that each websocket connected to that isolate can send the data:

    router.route("/broadcast").linkFunction((req) async {
      var message = await req.body.decodeAsString();
      websocketsOnThisIsolate.forEach((s) => s.add(message);
      messageHub.add({"event": "broadcastMessage", "data": message});
      return Response.accepted();
    });

    messageHub.listen((event) {
      if (event is Map && event["event"] == "broadcastMessage") {
        websocketsOnThisIsolate.forEach((s) => s.add(event["data"]);
      }
    });
Inheritance
Implements

Constructors

ApplicationMessageHub()

Properties

first Future
The first element of the stream. [...]
read-only, inherited
hashCode int
The hash code for this object. [...]
read-only, inherited
isBroadcast bool
Whether this stream is a broadcast stream.
read-only, inherited
isEmpty Future<bool>
Whether this stream contains any elements. [...]
read-only, inherited
last Future
The last element of this stream. [...]
read-only, inherited
length Future<int>
The number of elements in this stream. [...]
read-only, inherited
runtimeType Type
A representation of the runtime type of the object.
read-only, inherited
single Future
The single element of this stream. [...]
read-only, inherited

Methods

add(dynamic event) → void
Sends a message to all other hubs. [...]
close() Future
Closes the sink. [...]
listen(void onData(dynamic event), { Function onError, void onDone(), bool cancelOnError: false }) StreamSubscription
Adds a listener for messages from other hubs. [...]
any(bool test(T element)) Future<bool>
Checks whether test accepts any element provided by this stream. [...]
inherited
asBroadcastStream({void onListen(StreamSubscription<T> subscription), void onCancel(StreamSubscription<T> subscription) }) Stream
Returns a multi-subscription stream that produces the same events as this. [...]
inherited
asyncExpand<E>(Stream<E> convert(T event)) Stream<E>
Transforms each element into a sequence of asynchronous events. [...]
inherited
asyncMap<E>(FutureOr<E> convert(T event)) Stream<E>
Creates a new stream with each data event of this stream asynchronously mapped to a new event. [...]
inherited
cast<R>() Stream<R>
Adapt this stream to be a Stream<R>. [...]
inherited
contains(Object needle) Future<bool>
Returns whether needle occurs in the elements provided by this stream. [...]
inherited
distinct([bool equals(T previous, T next) ]) Stream
Skips data events if they are equal to the previous data event. [...]
inherited
drain<E>([E futureValue ]) Future<E>
Discards all data on the stream, but signals when it's done or an error occurred. [...]
inherited
elementAt(int index) Future
Returns the value of the indexth data event of this stream. [...]
inherited
every(bool test(T element)) Future<bool>
Checks whether test accepts all elements provided by this stream. [...]
inherited
expand<S>(Iterable<S> convert(T element)) Stream<S>
Transforms each element of this stream into a sequence of elements. [...]
inherited
firstWhere(bool test(T element), { dynamic orElse() }) Future
Finds the first element of this stream matching test. [...]
inherited
fold<S>(S initialValue, S combine(S previous, T element)) Future<S>
Combines a sequence of values by repeatedly applying combine. [...]
inherited
forEach(void action(T element)) Future
Executes action on each element of the stream. [...]
inherited
handleError(Function onError, { bool test(dynamic error) }) Stream
Creates a wrapper Stream that intercepts some errors from this stream. [...]
inherited
join([String separator = "" ]) Future<String>
Combines the string representation of elements into a single string. [...]
inherited
lastWhere(bool test(T element), { dynamic orElse() }) Future
Finds the last element in this stream matching test. [...]
inherited
map<S>(S convert(T event)) Stream<S>
Transforms each element of this stream into a new stream event. [...]
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
inherited
pipe(StreamConsumer streamConsumer) Future
Pipes the events of this stream into streamConsumer. [...]
inherited
reduce(dynamic combine(T previous, T element)) Future
Combines a sequence of values by repeatedly applying combine. [...]
inherited
singleWhere(bool test(T element), { dynamic orElse() }) Future
Finds the single element in this stream matching test. [...]
inherited
skip(int count) Stream
Skips the first count data events from this stream. [...]
inherited
skipWhile(bool test(T element)) Stream
Skip data events from this stream while they are matched by test. [...]
inherited
take(int count) Stream
Provides at most the first count data events of this stream. [...]
inherited
takeWhile(bool test(T element)) Stream
Forwards data events while test is successful. [...]
inherited
timeout(Duration timeLimit, { void onTimeout(EventSink<T> sink) }) Stream
Creates a new stream with the same events as this stream. [...]
inherited
toList() Future<List>
Collects all elements of this stream in a List. [...]
inherited
toSet() Future<Set>
Collects the data of this stream in a Set. [...]
inherited
toString() String
Returns a string representation of this object.
inherited
transform<S>(StreamTransformer<dynamic, S> streamTransformer) Stream<S>
Applies a StreamTransformer to the current stream. [...]
inherited
where(bool test(T event)) Stream
Creates a new stream from this stream that discards some elements. [...]
inherited

Operators

operator ==(dynamic other) bool
The equality operator. [...]
inherited