no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
Previous revision | |||
— | 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. 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 [[https:// | ||
+ | |||
+ | When a message is posted, all immediate deliveries to all networks are made using include/ | ||
+ | |||
+ | 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’s PuSH (pubsubhubbub) hubs notified. When a PuSH hub is operational, | ||
+ | |||
+ | ==== 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. | ||