no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
Last revision | |||
— | docs:message-flow [2020-09-20 19:19] – external edit 127.0.0.1 | ||
---|---|---|---|
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. | ||
+ | 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:// | ||
+ | |||
+ | 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/ | ||
+ | |||
+ | Local feeds are generated by mod/ | ||
+ | |||
+ | Salmon notifications arrive via mod/ | ||
+ | |||
+ | Push (pubsubhubbub) feeds arrive via mod/ | ||
+ | |||
+ | DFRN-poll feed imports arrive via src/ | ||
+ | |||
+ | ### Scenario #1. Bob posts a public status message | ||
+ | |||
+ | 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' | ||
+ | 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/ | ||
+ | |||
+ | 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). | ||
+ | |||
+ | ### 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. | ||
+ | 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. | ||
+ | |||
+ | 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). | ||
+ | |||
+ | ### Scenario #5. Bob posts a private message to Mary and Jack. | ||
+ | |||
+ | 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. | ||