Differences

This shows you the differences between two versions of the page.

Link to this comparison view

content:tech:meshms [15/05/2013 15:48]
127.0.0.1 external edit
content:tech:meshms [02/11/2015 14:08] (current)
Andrew Bettison Added link to MeshMS API and improved the protocol and UI descriptions
Line 1: Line 1:
 ====== MeshMS ====== ====== MeshMS ======
  
-{{ :content:technologies:screenshot-serval-mesh-0.90-messaging.png?200|Screenshot of Serval Mesh pre-release 0.90 “Shiny” MeshMS screen }} MeshMS is a short [[http://en.wikipedia.org/wiki/Text_messaging|text messaging]] service, similar to [[http://en.wikipedia.org/wiki/Short_Message_Service|SMS]], implemented in the [[Serval Mesh]], using [[Rhizome]] to transport messages between devices.+{{ :content:technologies:screenshot-serval-mesh-0.90-messaging.png?200|Screenshot of Serval Mesh pre-release 0.90 “Shiny” MeshMS screen }} MeshMS is a secure, one-to-one [[http://en.wikipedia.org/wiki/Text_messaging|text messaging]] service, similar to [[http://en.wikipedia.org/wiki/Short_Message_Service|SMS]], implemented in the [[Serval Mesh]], using [[Rhizome]] to transport messages between devices.
  
-MeshMS uses a single [[Rhizome Journal]] to send messages from a given [[subscriber|sender]] to a given [[subscriber|recipient]].  Every message is appended to the journal's payload using the [[MeshMS log]] format.  A conversation between two [[subscriber]]s involves two journal bundles, one for each direction.  The [[MeshMS user interface]] displays messages from the two journals in an interleaved fashion, using the receipt acknowledgements in each journal to derive the topological order.+==== Documentation ====
  
-At present, a MeshMS message can be up to 32767 bytes of [[http://en.wikipedia.org/wiki/UTF-8|UTF-8]] encoded [[http://en.wikipedia.org/wiki/Unicode|Unicode]] text.+  * [[MeshMS API]] 
 + 
 +==== Protocol ==== 
 + 
 +A MeshMS *conversation* is stored and transported as two [[Rhizome Journal]] bundles, one for each direction (“ply”).  Each ply bundle identifies its [[subscriber|sender]] and [[subscriber|recipient]], which are the same in the other ply, except swapped.  Each party creates the bundle for its own outgoing ply and is the only one able to modify the bundle. 
 + 
 +To send a message, the sending party appends a structure containing the message's text to the journal's payload using the [[MeshMS log]] format.  The updated bundle is conveyed to the other party using whatever [[Rhizome]] transport is available.  When the message arrives, the recipient appends an acknowledgemnt to its own ply bundle, which gets conveyed back to the sender in similar fashion.  This allows MeshMS to display a "delivered" indication on sent messages (but not "read). 
 + 
 +At present, a MeshMS message can be up to 32767 bytes of [[http://en.wikipedia.org/wiki/UTF-8|UTF-8]] encoded [[http://en.wikipedia.org/wiki/Unicode|Unicode]] text.  In future, the MeshMS message could be extended to include images, videos, contacts, links, and other multimedia content.  See [[MeshMS extended content]]. 
 + 
 +==== User interface ==== 
 + 
 +The [[MeshMS user interface]] displays the messages from the two bundles in an interleaved fashion, using the acknowledgements in each journal to derive the topological order.  There are two implementations of a MeshMS UI: 
 + 
 +  * [[Serval Mesh]] 
 +  * [[Serval Chat]]
  
-In future, the MeshMS message could be extended to include images, videos, contacts, links, and other multimedia content.  See [[MeshMS extended content]]. 

Login