Software /
code /
prosody
File
spec/scansion/basic_message.scs @ 12254:5b0c8e499288
modulemanager: Add plugin load filter that reads module metadata from source
Metadata in modules is added using lines formatted as:
--% key: value
Where key is a valid identifier string, and value is also a string (leading
and trailing whitespace are trimmed during parsing).
The initial supported keys are:
--% requires_core_features: feature1, feature2, ...
--% conflicts_core_features: feature1, feature2. ...
These 'features' map to features reported by the new core.features module.
A benefit of this load-time metadata approach compared to e.g. something like
module:requires()/module:conflicts() is that we can continue to look in module
search paths for a suitable module. Aborting an already-loaded module due to
a version conflict would be too late.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Fri, 04 Feb 2022 14:20:00 +0000 |
parent | 10515:35bf3b80480f |
line wrap: on
line source
# Basic message routing and delivery [Client] Romeo jid: user@localhost password: password [Client] Juliet jid: juliet@localhost password: password [Client] Juliet's phone jid: juliet@localhost password: password resource: mobile --------- # Act 1, scene 1 # The clients connect Romeo connects Juliet connects Juliet's phone connects # Romeo publishes his presence. Juliet has not, and so does not receive presence. Romeo sends: <presence/> Romeo receives: <presence from="${Romeo's full JID}" /> # Romeo sends a message to Juliet's full JID Romeo sends: <message to="${Juliet's full JID}" type="chat"> <body>Hello Juliet!</body> </message> Juliet receives: <message to="${Juliet's full JID}" from="${Romeo's full JID}" type="chat"> <body>Hello Juliet!</body> </message> # Romeo sends a message to Juliet's phone Romeo sends: <message to="${Juliet's phone's full JID}" type="chat"> <body>Hello Juliet, on your phone.</body> </message> Juliet's phone receives: <message to="${Juliet's phone's full JID}" from="${Romeo's full JID}" type="chat"> <body>Hello Juliet, on your phone.</body> </message> # Scene 2 # This requires the server to support offline messages (which is optional). # Romeo sends a message to Juliet's bare JID. This is not immediately delivered, as she # has not published presence on either of her resources. Romeo sends: <message to="juliet@localhost" type="chat"> <body>Hello Juliet, are you there?</body> </message> # Juliet sends presence on her phone, and should receive the message there Juliet's phone sends: <presence/> Juliet's phone receives: <presence/> Juliet's phone receives: <message from="${Romeo's full JID}" type="chat"> <body>Hello Juliet, are you there?</body> <delay xmlns='urn:xmpp:delay' from='localhost' stamp='{scansion:any}' /> </message> # Romeo sends another bare-JID message, it should be delivered # instantly to Juliet's phone Romeo sends: <message to="juliet@localhost" type="chat"> <body>Oh, hi!</body> </message> Juliet's phone receives: <message from="${Romeo's full JID}" type="chat"> <body>Oh, hi!</body> </message> # Juliet's laptop goes online, but with a negative priority Juliet sends: <presence> <priority>-1</priority> </presence> Juliet receives: <presence from="${Juliet's full JID}"> <priority>-1</priority> </presence> Juliet's phone receives: <presence from="${Juliet's full JID}"> <priority>-1</priority> </presence> # Again, Romeo sends a message to her bare JID, but it should # only get delivered to her phone: Romeo sends: <message to="juliet@localhost" type="chat"> <body>How are you?</body> </message> Juliet's phone receives: <message from="${Romeo's full JID}" type="chat"> <body>How are you?</body> </message> # Romeo sends direct to Juliet's full JID, and she should receive it Romeo sends: <message to="${Juliet's full JID}" type="chat"> <body>Are you hiding?</body> </message> Juliet receives: <message from="${Romeo's full JID}" type="chat"> <body>Are you hiding?</body> </message> # Juliet publishes non-negative presence Juliet sends: <presence/> Juliet receives: <presence from="${Juliet's full JID}"/> Juliet's phone receives: <presence from="${Juliet's full JID}"/> # And now Romeo's bare JID messages get delivered to both resources # (server behaviour may vary here) Romeo sends: <message to="juliet@localhost" type="chat"> <body>There!</body> </message> Juliet receives: <message from="${Romeo's full JID}" type="chat"> <body>There!</body> </message> Juliet's phone receives: <message from="${Romeo's full JID}" type="chat"> <body>There!</body> </message> # The End Romeo disconnects Juliet disconnects Juliet's phone disconnects