From bbf634a989779b4193d927a3f0046ba61e19f1c7 Mon Sep 17 00:00:00 2001 From: Roland Hieber Date: Sat, 14 Dec 2013 07:37:39 +0100 Subject: [PATCH 1/1] sync: xmpp pubsub, multi-user chat --- sec-chatty-things.tex | 4 +--- sec-xmpp.tex | 36 +++++++++++++++++++++++++++--------- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/sec-chatty-things.tex b/sec-chatty-things.tex index d748494..fe69f94 100644 --- a/sec-chatty-things.tex +++ b/sec-chatty-things.tex @@ -4,7 +4,6 @@ After the underlying techniques have been explained, we can have a look at the system architecture which Klauck and Kirsche~\cite{Klauck:2012:BCC:2352852.2352881} use to build Chatty Things. -\todo \pages{3} \subsection{Service Provisioning Sublayer} @@ -68,8 +67,7 @@ devices of a topic, or she can also interact with them directly. In scenarios without an XMPP server, the XEP-0174 module is activated and devices talk directly with the user or with other devices. This method has the drawback that Multi-User Chats cannot be used for topic filtering, since no -method is specified to do XEP-0045 and XEP-0174 at the same time. \todo[temporary subscription presence here?] -In this case, +method is specified to do XEP-0045 and XEP-0174 at the same time. In this case, a user must have an XEP-0174-compliant chat client, but it also gives her the opportunity to interact with things spontaneously on an ad-hoc basis (e.~g. when entering a room) without need for any additional gateway on the application diff --git a/sec-xmpp.tex b/sec-xmpp.tex index f1b57b4..3a44829 100644 --- a/sec-xmpp.tex +++ b/sec-xmpp.tex @@ -1,5 +1,4 @@ \subsection{XMPP} -\todo \pages{3-4} The \term{Extensible Messaging and Presence Protocol (XMPP)} is a distributed, @@ -70,19 +69,40 @@ terminated. \todo[Example stream] -\subsubsection{Multi-User Chats} +\subsubsection{Publish/Subscribe and Presence} + +Typically, a user wants to chat with a more or less fixed set of other users, +whose JIDs she needs to know, so she needs some kind of ``address book'' that +remembers the JIDs for her. In XMPP, this is address book is called +\term{roster}, and it also shows the users' willingness to chat (``presence''). +In order to see their chat status (which can be one of ``online'', ``offline'', +and several ``away'' or ``do not disturb'' states), a user needs to subscribe to +the other user's status. The mechanism behind this is called +\term{Publish-Subscribe} and is specified in XEP-0060~\cite{xep-0060}. It can +be used to notify interested users about changes in personal information, and +implements the classic Observer pattern. -\cite{xep-0045} +A user publishes information by creating a \term{node} on the XMPP server, which +acts as a handle for the data. Interested users can then query the server for +nodes, and request subscription to them. When the owner of the node confirms the +subscription request, subscribers get notified whenever the owner updates the +respective node. -\subsubsection{Publish/Subscribe, Presence and the Roster} +All communication takes place between the client and the server over \code{} +(``information query'') stanzas. -\cite{xep-0060} +\subsubsection{Multi-User Chats} +Besides one-to-one messaging, XMPP also allows users to create multi-user +chat rooms, which is specified in \cite{xep-0045}. Each chat room is given a +unique JID to which the users send their messages to. Each incoming message is +then dispatched to all users which have joined the room. -\cite{rfc6121} +To join a room, the user sends a \code{} stanza to the room JID, where +the resource part of the room JID specifies the desired nick name. \subsubsection{XMPP Serverless Messaging}\label{sec:xsm} -\todo +\pages{1} To overcome the need for a central server and authentication, XMPP Serverless Messaging~\cite{xep-0174} allows XMPP clients on a network to build a @@ -116,6 +136,4 @@ message or IQ stanzas like they would to an XMPP server. Presence is managed over the corresponding TXT record in the mDNS. To go offline, a client announces the deletion of its mDNS records. -\pages{1} - % vim: set ft=tex et ts=2 sw=2 : -- 2.20.1