Differences
This shows you the differences between two versions of the page.
docs:message-flow [2020-09-20 19:19] – external edit 127.0.0.1 | docs:message-flow [2022-06-24 14:58] (current) – Tobias | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | Friendica Message Flow | + | ====== |
- | === | + | |
- | This page documents some of the details of how messages get from one person to another in the Friendica network. | + | This page documents some of the details of how messages get from one person to another in the Friendica network. There are multiple paths, using multiple protocols and message formats. |
- | There are multiple paths, using multiple protocols and message formats. | + | |
- | Those attempting to understand these message flows should become familiar with (at the minimum) the [DFRN protocol document](https:// | + | Those attempting to understand these message flows should become familiar with (at the minimum) the [[https:// |
- | When a message is posted, all immediate deliveries to all networks are made using include/ | + | When a message is posted, all immediate deliveries to all networks are made using include/ |
- | This file also invokes the local side of all deliveries including DFRN-notify. | + | |
mod/ | mod/ | ||
- | Local feeds are generated by mod/ | + | Local feeds are generated by mod/ |
Salmon notifications arrive via mod/ | Salmon notifications arrive via mod/ | ||
Line 20: | Line 17: | ||
DFRN-poll feed imports arrive via src/ | DFRN-poll feed imports arrive via src/ | ||
- | ### Scenario #1. Bob posts a public status message | + | ==== Scenario #1. Bob posts a public status message |
- | This is a public message with no conversation members so no private transport is used. | + | This is a public message with no conversation members so no private transport is used. There are two paths it can take - as a bbcode path to DFRN clients, and converted to HTML with the server’s PuSH (pubsubhubbub) hubs notified. When a PuSH hub is operational, |
- | There are two paths it can take - as a bbcode path to DFRN clients, and converted to HTML with the server's PuSH (pubsubhubbub) hubs notified. | + | |
- | When a PuSH hub is operational, | + | |
- | They will fall back on a daily poll in case the hub has delivery issues (this is quite common when using the default Google reference hub). | + | |
- | If there is no specified hub or hubs, DFRN clients will poll at a configurable (per-contact) rate at up to 5-minute intervals. | + | |
- | Feeds retrieved via dfrn-poll are bbcode and may also contain private conversations which the worker has permissions to see. | + | |
- | ### Scenario #2. Jack replies to Bob's public message. Jack is on the Friendica/ | + | ==== Scenario #2. Jack replies to Bob’s public message. Jack is on the Friendica/ |
- | Jack uses dfrn-notify to send a direct reply to Bob. | + | Jack uses dfrn-notify to send a direct reply to Bob. Bob then creates a feed of the conversation and sends it to everybody involved in the conversation using dfrn-notify. PuSH hubs are notified that new content is available. The hub or hubs will then retrieve the latest feed and transmit it to all hub subscribers (which may be on different networks). |
- | Bob then creates a feed of the conversation and sends it to everybody involved in the conversation using dfrn-notify. | + | |
- | PuSH hubs are notified that new content is available. | + | |
- | The hub or hubs will then retrieve the latest feed and transmit it to all hub subscribers (which may be on different networks). | + | |
- | ### Scenario #3. Mary replies to Bob's public message. Mary is on the Friendica/ | + | ==== Scenario #3. Mary replies to Bob’s public message. Mary is on the Friendica/ |
- | Mary uses dfrn-notify to send a direct reply to Bob. | + | Mary uses dfrn-notify to send a direct reply to Bob. Bob then creates a feed of the conversation and sends it to everybody involved in the conversation (excluding himself, the conversation is now sent to both Jack and Mary). Messages are sent using dfrn-notify. Push hubs are also notified that new content is available. The hub or hubs will then retrieve the latest feed and transmit it to all hub subscribers (which may be on different networks). |
- | Bob then creates a feed of the conversation and sends it to everybody involved in the conversation (excluding himself, the conversation is now sent to both Jack and Mary). | + | |
- | Messages are sent using dfrn-notify. | + | |
- | Push hubs are also notified that new content is available. | + | |
- | The hub or hubs will then retrieve the latest feed and transmit it to all hub subscribers (which may be on different networks). | + | |
- | ### Scenario #4. William replies to Bob's public message. William is on the OStatus network. | + | ==== Scenario #4. William replies to Bob’s public message. William is on the OStatus network. |
- | William uses salmon to notify Bob of the reply. | + | William uses salmon to notify Bob of the reply. Content is html embedded in salmon magic envelope. Bob then creates a feed of the conversation and sends it to all Friendica participants involved in the conversation using dfrn-notify (excluding himself, the conversation is sent to both Jack and Mary). Push hubs are notified that new content is available. The hub or hubs will then retrieve the latest feed and transmit it to all hub subscribers (which may be on different networks). |
- | Content is html embedded in salmon magic envelope. | + | |
- | Bob then creates a feed of the conversation and sends it to all Friendica participants involved in the conversation using dfrn-notify (excluding himself, the conversation is sent to both Jack and Mary). | + | |
- | Push hubs are notified that new content is available. | + | |
- | The hub or hubs will then retrieve the latest feed and transmit it to all hub subscribers (which may be on different networks). | + | |
- | ### Scenario #5. Bob posts a private message to Mary and Jack. | + | ==== Scenario #5. Bob posts a private message to Mary and Jack. ==== |
- | Message is delivered immediately to Mary and Jack using dfrn_notify. | + | Message is delivered immediately to Mary and Jack using dfrn_notify. Public hubs are not notified. Requeueing is attempted in case of timeout. Replies follow the same flow as the public replies except that hubs are not notified and message is never made available in the public feed. The entire conversation is also made available to Mary and Jack (and nobody else) through their dfrn-poll personalised feed. |
- | Public hubs are not notified. | + | |
- | Requeueing is attempted in case of timeout. | + | |
- | Replies follow the same flow as the public replies except that hubs are not notified and message is never made available in the public feed. | + | |
- | The entire conversation is also made available to Mary and Jack (and nobody else) through their dfrn-poll personalised feed. | + | |