The Message Relay
One message, three ways to carry it. Take the recipient offline and see which designs still deliver, and what each one has to keep awake.
One message, three ways to carry it. Take the recipient offline and see which designs still deliver, and what each one has to keep awake.
Experiment 03 · Messaging
A sender, a recipient and a message. Choose how it travels, and whether the recipient is awake.
The sender signs the message and appends it to their own log, on their own device.
The recipient's phone is asleep. There is no other peer, so the message stays on the sender's device.
The sender closes the app. The only copy of the message is now on a device nobody can reach.
The recipient opens the app later. The sender is gone, and no peer online holds the message.
The message waits on the sender's device until both are online at the same time.
A sender's phone at the front left, a recipient's at the front right. At the back sits the always-on node, if the design has one: a server tower, or a blind peer cabinet with a shuttered front, because a blind peer stores encrypted blocks it cannot read. The direct route has only an empty footprint.
The message is a single tile. In the peer-to-peer routes it starts life in the sender's own signed log. Over WebSockets it goes straight up an open connection to the server.
The two designs that deliver to a sleeping phone both rely on something that is always on. The difference is who owns it and what it can read.
One sender, one recipient, one message. Real messaging adds groups, several devices per person, ordering, retries and encryption keys, and the push step is simplified to a single wake-up.
This experiment accompanies Why We Moved from P2P Messaging to WebSockets.