====== Jabber Ressourcen ====== Jabber bietet sogenannte [[http://wiki.jabber.org/index.php/Jabber_Resources|Ressourcen]]. Ressourcen ermöglichen es, dass man mit mehreren Clients, unter derselben JID, gleichzeitig online sein kann. Eine Ressource wird an die JID angehängt, z.B. Max.Mustermann@jabber.org/home oder Max.Mustermann@jabber.org/office usw. Welche Ressource verwendet wird entscheidet die Priorität oder man kann im Client manuell explizit eine Ressource auswählen. Die Priorität kann man manuell vergeben oder sie wird automatisch vom Client vergeben wenn der Status (Anwesend, Abwesend, Beschäftigt...) geändert wird. Je höher der Wert umso höher ist die Priorität. Der Client mit der höchsten Priorität bekommt die Nachrichten gesendet. Die Vergabe der Prioritäten zwischen den unterschiedlichen Clients ist aber nicht einheitlich und manche unterstützen es gar nicht. So hilft es zb nichts wenn man Gajim auf //abwesend// stellt und auf einem anderen Rechner Pidgin auf //Angemeldet// da die Priorität von Gajim immer noch höher ist und damit alle Nachrichten erhält (siehe Prioritäten von Clients). Wenn man verschiedene Clients verwendet muss man u.U. die Prioritäten manuell ändern. Ich versuche das Beispiel aus dem jabber.org Wiki mal frei zu übersetzten. ==== Beispiel für Jabber Ressourcen ==== Angenommen du bist bei der Arbeit. Gegen 14:00 Uhr möchtest du zum Essen gehen. Du stellst deinen Client auf dem Büro PC auf //abwesend//. Unterwegs fällt dir ein, dass du noch eine Nachricht schreiben wolltest. Du nimmst dein Mobiltelefon und startest einen J2ME Client (z.B. [[http://www.mikini.dk/java/|Mobber]] oder [[http://bombus-im.org/|Bombus]]). Damit bist du wieder //anwesend// und alle Nachrichten landen auf deinem Mobiltelefon. Im Restaurant angekommen, stellst du fest, dass es ein offenes WLAN gibt. Du startest deinen PDA mit einem weiteren Client. Nun sind beide Clients (PDA und Mobiltelefon) //anwesend//. Damit der PDA den Vorzug bekommt, sollte er eine höhere Priorität als das Mobiltelefon erhalten. ===== Prioritäten ===== Wenn man beim Starten eines Chats nicht explizit eine Ressource des Chatpartners auswählt, entscheidet der Server anhand der Priorität welche Ressource verwendet wird. Der Client mit der höchsten Priorität erhält den Vorzug. Sollten zwei oder mehr Clients die gleiche Priorität besitzen, entscheidet der Server nach einer vorbestimmten Regel. Welche das ist, hängt vermutlich von den Einstellungen des Server ab. Vermutlich wird der Client gewählt, der zuletzt aktiv war ==== Prioritäten einzelner Jabber Clients ==== Die Jabber Clients verwalten die Prioritäten unterschiedlich. Ich habe mich mal hingesetzt und verschiedene Clients hinsichtlich der Prioritäten untersucht und diese Liste erstellt. Würde mich freuen, wenn ihr dabei helfen könntet die Liste zu erweitern. === Prioritäten bei Gajim === * Angemeldet: 50 * Frei zum Chaten: 50 * Abwesend: 40 * Nicht verfügbar: 30 * Beschäftigt: 20 * Unsichtbar: 10 Gajim erlaubt es die Prioritäten anzupassen. Man findet es im Menu Ändern->Einstellungen->Erweitert->Erweiterter Konfigurationseditor Öffnen. Und dort unter accounts->accountname->autopriority_* === Prioritäten bei Pidgin/Adium === * Angemeldet: 1 * Gesprächig: 1 * Abwesend: 0 * Nicht verfügbar: 0 * Beschäftigt: 0 === Prioritäten für JWChat === Auf [[http://jwchat.org/|http://jwchat.org/]] gibt es einen web-based Jabber Client. Dieser bietet drei Prioritäten: * low: 0 * medium: 10 * high: 100 === Prioritäten bei Psi === Psi kann anscheinend automatisch keine Prioritäten vergeben. Default Wert ist 5 === Prioritäten bei Kopete === Kopete kann auch keine automatischen Prioritäten vergeben. Der Default Wert ist hier immer 2 === Prioritäten bei SIM === SIM scheint auch keine automatischen Prioritäten zu verwalten. Der Default Wert ist hier 5 === Prioritäten bei meebo.com === * ich bin anwesend: 1 * alle anderen: 0 === Prioritäten von Gossip === * Verfügbar: 50 * Beschäftigt : 40 * Abwesend : 30 ==== Sonderfall negative Prioritäten ==== Jabber bietet die Möglichkeit negative Prioritäten zu vergeben. Ein Server wird eine Ressource mit einer negativen Priorität immer ignorieren. Um mit einer solchen Ressource in Verbindung zu treten, muss man explizit einen Chat mit ihr starten. ===== Fazit ===== Ressourcen funktionieren, aber nur wenn die Clients richtig mitspielen bzw., wenn man überall den gleichen Cient verwendet. Verwendet man unterschiedliche Clients auf mehreren Rechners, kann das zu unerwünschten Effekten führen. Hat man zB. auf einem Rechner //Kopete// und auf einem anderen //Pidgin// installiert, dann spielt der Online Status keine Rolle. //Kopete// hat immer die höchste Priorität und erhält damit die Nachrichten. Im ungünstigsten Fall unterhält sich der Chatpartner mit einem einsamen PC und man selbst fragt sich, was man falsch gemacht hat, sodass niemand antwortet ;). Offensichtlich wurden bei der Definition von XMPP keine Prioritäten vorgegeben oder die Programmierer halten sich einfach nicht dran. Wenn man, warum auch immer, unterschiedliche Clients verwendet, muss man darauf Rücksicht nehmen und gegebenenfalls die Werte manuell ändern. Ideal ist hier //Gajim//. Er bietet für jeden Status eine eigene Priorität und die Möglichkeit, die Werte anzupassen. Unstimmig ist nur die Einstufung der //beschäftigt// Priorität. Angenommen der Rechner zu Hause steht auf //abwesend// und im Büro schalte ich auf //beschäftigt//, dann hätte der Client zu Hause die höhere Priorität und würde in dieser Zeit alle Nachrichten erhalten. Wer nur //Pidgin// verwendet, kann damit auch glücklich werden. Problematisch ist nur, wenn der Client, an dem man gerade arbeitet, nach 5 Minuten auf abwesend schaltet. Dann haben alle Clients die Priorität 0 und wenn der Server damit nicht zurecht kommt, können Nachrichten auf dem falschen Client landen. Sollte alles andere nicht helfen, kann man den Chatpartner immer noch bitten, direkt mit der Ressource einen Chat zu starten. Dann kommen dessen Nachrichten unabhängig von den vorliegenden Prioritäten an. ~~DISCUSSION~~