Communicate within a device
PubSub is a service for bi-directional communication. In this tutorials, we show how PubSub enables communication between two apps installed on the same device.
In this scenario, the
data does not need to be sent out to the cloud to be received by the other app.
We will be communicating on the device topic named device:hello-world
.
The subscriber
The subscriber program sets up a subscription on a device topic.
/// Subscribes to a device topic. import pubsub topic ::= "device:hello-world" main: pubsub.subscribe topic: | msg/pubsub.Message | print "Received message '$msg.payload.to_string'" // Stop listening for other messages and exit 'main'. return
Save the above Toit program in a file named subscribe.toit
.
The publisher
The publisher program publishes the message "Hello, World!"
on the device topic and terminates.
/// Publishes a message on the specified device topic. import pubsub topic ::= "device:hello-world" main: pubsub.publish topic "Hello, World!" print "Message published on topic '$topic'"
Save the above Toit program in a file named publish.toit
.
Running the example
Run the subscriber example with the CLI command
This runs the subscribe.toit
program on your default device. If
you have more than one device and haven't defined a default device
you can use the -d
option to specify on which device the program
should run.
Once the program has started, open another terminal window and run the publisher example with the CLI command
The output of both executions on the same device are shown below: