Rohedaten Blog     Über     Archiv     Hilfe     Feed

Das perfekte XMPP/Jabber Setup

Ich habe einige Zeit damit verbracht, die Features meines XMPP-Setups dem Chat von Facebook und Whatsapp anzunähern. Denn, man muss deren Geschäftspraktiken zwar nicht mögen, aber es natürlich auch seinen Grund, warum diese so weit verbreitet sind.

In diesem Post möchte ich deshalb kurz zusammenfassen, was für Anforderungen ich an XMPP stelle, und wie man diese am besten umsetzt. Aufgeteilt ist das Ganze in allgemeine Überlegungen, dann die Clientseite, und schließlich die Serverseite.

Allgemeine Anforderungen

Wie gerade schon erwähnt, möchte ich im Prinzip die Annehmlichkeiten, die Facebook und Whatsapp bieten, auch bei XMPP nicht missen. Hierzu zählen:

  • Verwendung mehrerer Clients gleichzeitig
  • Serverseitige Historie
  • Das Versenden von Bildern, Audioaufnahmen und anderer beliebiger Dateien

Funktionalitäten, die nicht direkt im XMPP-Standard enthalten sind, werden in sog. XEPs (XMPP Extension Protocols) beschrieben. Teilweise müssen diese nur vom Client unterstützt werden, meist jedoch müssen sowohl Client als auch Server diese unterstützen.

Um die Anforderungen umzusetzen, sind folgende XEPs relevant:

  • XEP-0198: Stream Management

    Sorgt im Grunde dafür, dass, vor allem bei mobilen Verbindungen, weniger Nachrichten verloren gehen. In Ausnahmefällen ist das bei mir aber immer noch vorgekommen. Erst mit der zusätzlichen Verwendung von XEP-0313 kann man das für alle Fälle verhindern.

  • XEP-0280: Message Carbons

    Sorgt dafür, dass beim Chatten mittels eines Clients, andere ebenfalls eingeloggte, die gesendeten Nachrichten auch erhalten.

  • XEP-0313: Message Archive Management

    Ermöglicht vollständige serverseitige Historie.

  • XEP-0363: HTTP File Upload

    Benötigt zum zuverlässigen Dateiaustausch. Es gibt zwar noch den älteren Standard, XEP-0234: Jingle File Transfer, dieser funktioniert allerdings nur, wenn der Chatpartner gerade online ist. Dafür spart man sich aber den zusätzlichen HTTP Server.

Clients

Die Clientseite sieht, vor allem Abseits von Android leider noch etwas düster aus, vor allem was Usability anbelangt.

Es gibt einen sehr guten Client für Android, Conversations. Zu kaufen bei Google Play, Gratis bei F-Droid. Aber wenn man mal 2€ über hat, kann man den Entwickler damit auch unterstützen, denn er leistet wirklich gute Arbeit. Dafür gibt es auch noch Erweiterungen, die das Ganze noch Whatsapp-Ähnlicher machen:

Für Linux/Windows/OSX ist der Client, der die nötigen Features am besten umsetzt, Gajim. Ist leider etwas unschön und vor allem XEP-0313 ist usability-technisch nicht perfekt umgesetzt. Man muss nämlich leider immer noch einen extra Button drücken, um die History angezeigt zu bekommen.

Der beste verfügbare Web-Client ist wohl zur Zeit converse.js. Unterstützt im Prinzip alles benötigte, hat nur bei der Unterstützung von XEP-0313 ein paar Fehler gezeigt.

Server

Server, die die genannten XEPs umsetzen, gibt es nach meinem Kenntnisstand 2 bekannte:

  • Prosody ab Version 0.10
  • ejabberd

jeweils mithilfe von der Community erstellter Plugins.

Zur genauen Umsetzung der Serverseite mit Prosody folgt noch ein weiterer Artikel.

Fragen und Anmerkungen gerne in die Kommentare.