Präsentation über das XMPProtokoll (== Jabber)
Ich musste letzte Woche eine einstündige Präsentation zum XMPProtokoll halten. Wie gesagt ist XMPP ein Protokoll und bildet die Grundlage für Jabber (rein technisch betrachtet stimmt das jetzt gar nicht aber den meisten wird das mehr sagen als die Tatsache dass Jabber eine Open-Source-Community ist). Wer sich also mal mehr über das Thema informieren will, auch eine Präsentation halten muss oder vielleicht einen eigenen Server aufstellen oder Client programmieren will, den wird das vielleicht interessieren.
Es ist jedenfalls ein sehr interessantes Thema und wenn man etwas davon versteht stellt es auch kein Problem dar seine eigene Kommunikationsinfrastruktur aufzubauen – was ziemlich cool ist wenn man bedenkt dass man ein eigenes Instant Messaging Netzwerk nur für seine Freunde realisieren kann
Die Präsentation wird euch nicht wirklich an allen Punkten klar sein wenn ihr euch die einfach mal eben reinzieht. Das liegt zum großen Teil daran, dass ich ursprünglich die Slides auch erkläre (und mich gibt’s jetzt leider nicht dazu
). Aus diesem Grund habe ich dann wenigstens an den wichtigsten Stellen Kommentare eingefügt. Ein kleines Codebeispiel zum senden und empfangen von Nachrichten in Java ist auch vorhanden. Zu dem Code ist noch zu sagen dass ihr dazu zwei Libraries benötigt die beide Teil von SMACK sind – SMACK ist eine Java API für XMPP (Jabber).
UPDATE: Eine erweiterte Umsetzung in Ruby gibt es übrigens in einem interessanten Beitrag von Bernhard Häussner.
Hier dann mal meine Präsentation XMPP.pptx und hier der Source für die Java Klasse:
import org.jivesoftware.smack.Chat; import org.jivesoftware.smack.ChatManager; import org.jivesoftware.smack.ConnectionConfiguration; import org.jivesoftware.smack.MessageListener; import org.jivesoftware.smack.SASLAuthentication; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smack.packet.Message; /** * Sendet eine Nachricht und ermöglicht das Empfangen von Nachrichten. Wenn die * übertagene Nachricht == "quit" ist, wird die Verbindung beendet. * * @author David Strohmayer * */ public class SendMessageTest { private XMPPConnection connection; public static void main(String[] args) { new SendMessageTest(); } public SendMessageTest() { connect(); createChat(); } private void connect() { // Hier müsst ihr euren Server eintragen (z.B.: "jabber.org") ConnectionConfiguration config = new ConnectionConfiguration("euerServer", 5222); config.setSASLAuthenticationEnabled(true); connection = new XMPPConnection(config); try { System.out.println("Connecting..."); connection.connect(); SASLAuthentication.supportSASLMechanism("PLAIN", 0); System.out.println("Logging in..."); // Die Resource müsst ihr nicht angeben aber ich würde eine // eintragen. Und zwar eine die ihr noch nicht verwendet. // Mit 'eureId' ist hier nur der name ohne Domain(!) gemeint. Also bei // "david.strohmayer@jabber.ccc.de", wäre das "david.strohmayer" connection.login("eureId", "euerPasswort", "eureResource"); } catch (XMPPException e) { e.printStackTrace(); } } private void createChat() { ChatManager chatmanager = connection.getChatManager(); // Hier kommt eure komplette JID rein - am besten ohne Resource. // Z.B.: david.strohmayer@jabber.ccc.de Chat chat = chatmanager.createChat("eureId@dieDomain.de", new MessageListener() { public void processMessage(Chat chat, Message message) { if (message.getBody().equalsIgnoreCase("quit")) { System.out.println("Disconnecting..."); connection.disconnect(); } else { System.out.println("Received message: " + message.getBody()); } } }); try { System.out.println("Sending Message..."); chat.sendMessage("Zefix!"); while(true); } catch (XMPPException e) { System.err.println("Error delivering message..."); } } }

Wie jetzt, Quelltext ohne (FOSS) Lizenz-Vermerk? Und Präsentation nur in einem proprietären und umstrittenen MS-Format? Und ohne Creative-Commons? Ich bin wirklich enttäuscht, Dave…
@Amboss
Ja ich dachte mir dass du damit ankommst ^^
Der Quelltext und die Präsi sind beide komplett frei. Kann jeder damit machen was er will.
Sollte es jemand irgendwo verwenden, kann er das tun ohne auf mich hinzuweisen. Aber man sollte beachten dass ich Quellenangaben angegeben habe und die sollte man möglichst auch beibehalten…
Ach ja, zu dem Format: Wenn ich das ins alte PowerPoint Format oder in PDF wandle, dann hat das über 4 MB und das wollte ich mir grad nicht antun. Wenn es jamand nicht nutzen kann / will weil es ein proprietäres Format ist, dann kann er es eben nicht nutzen
Ich werde mir nicht die Mühe machen das umzuwandeln. Kann jeder selber machen oder es eben lassen.
Und das obwohl ich grad “Open Source” so schön in deiner Tag Wolke rumfliegen sehe
@HansDampf
Ach… als ob das Format jetzt ein Hindernis für dich wär
Die Slides bieten eine gute Übersicht auch ohne deine Ausführungen… (war gerade beim Ansehen der Präsentation aber eher positiv vom Dualmonitor-Verhalten des neuen OpenOffice überrascht, weil ich das Meiste doch schon wusste. )
Ich habe natürlich auch gleich wieder einen Post zum Thema verfasst
, weil ich vor kurzem mit Ruby+XMPP etwas herumgespielt habe:
XMPP (Jabber) mit Ruby am Beispiel FelicianXMPPBot
Lusitg, was bei der Ruby-Variante alles anders ist. message.getBody() in Java und message.body in Ruby, weil sowieso alles Signale sind. Oder dass man in Java einen Chat-Manager erstellt, während Ruby eine Closure benutzt.
[PS: Das Vektor-Programm heißt Inkscape nicht Inkspace]
@Bernhard H.
OMG! Ich hab echt “Inkspace” geschrieben XD !! Das ist eigentlich echt nicht lustig. Danke für den Hinweis (Komisch dass da keiner bei der Präsentation was gesagt hat).
PS: Hab den Link in deinem Kommentar angepasst damit er nicht über den Rand hinweggeht.