Chat-Dienst
Aus Kaioo Wiki
Inhaltsverzeichnis |
[Bearbeiten] Vorschlag eines Jabber-Servers
[Bearbeiten] Anmeldung, Adressen
Kaioo setzt einen eigenen Jabber-Server auf, der Domain-Name der JID und der Servername sind kaioo.com, damit die Konfiguration möglichst einfach ist.
Ab da wird jeder bereits bestehende Benutzer einmalig gefragt, ob er am Chat-System teilnehmen möchte. Frische Benutzer werden direkt nach der Anmeldung gefragt. Man kann auch nachträglich ein- und aussteigen.
Wer mitmacht, muß sich eine eindeutige ID geben, deren Vorgabewert aus "Vorname.Nachname" zusammengebaut wird. Die JID ist dann "ID@kaioo.com". IDs, die aus dem Chatsystem aussteigen, sind für ein Jahr gesperrt und stehen dann erst wieder für Neuanmeldungen zur Verfügung.
[Bearbeiten] Benutzen einer Nicht-Kaioo-JID
Man kann auch am Chat-System teilnehmen und dabei keine ID, sondern eine vollständige JID angeben (also mit "@"). In diesem Fall bekommt man keinen Account auf Kaioos Jabber-Server.
Zu beachten ist, daß die Jabber-Adresse im Profil von der dem Chat-System übergebenen Jabber-Adresse abweichen kann. Sie wird allerdings, wenn vorhanden, als Vorgabewert im JID-Feld bei der Anmeldung zum Chatdienst benutzt. Außerdem wird sie gesetzt, wenn man sich beim Chat-System angemeldet hat. Der Benutzer kann sie aber wieder entfernen.
Es gibt also drei Arten von Chat-Benutzern:
- Die, die eine Kaioo-Jabber-ID haben. Diese gliedern sich wiederum auf in
- diejenigen, die über die Kaioo-Webseite eingeloggt sind und
- diejenigen, die sich mit einem Client von extern eingeloggt haben.
- Sowie die, die eine JID auf einem ganz anderen Jabber-Server haben und auf dem eingeloggt sind.
[Bearbeiten] Kontaktliste, Aushandeln der Autorisierungen
Nimmt ein Benutzer neu am Chat-System mit einer Kaioo-JID teil, werden alle seine Freunde zur Kontaktliste hinzugefügt. Sie sind bilateral autorisiert. Freunde mit externen JIDs versucht der Kaioo-Jabber-Server ebenfalls bilateral zu autorisieren. Scheitert ein solcher Autorisierungsversuch, wird kein weiterer unternommen. Im Notfall kann man ja einen Freund entfernen und sofort wieder hinzufügen.
Nimmt ein Benutzer neu am Chat-System mit einer nicht-Kaioo-JID teil, wird versucht, bilateral Autorisierungen für alle Freunde mit Kaioo-JID zu bekommen. Freunde, die ebenfalls eine nicht-Kaioo-JID haben, können prinzipbedingt nicht hinzugefügt werden. Das müssen die beiden Freunde dann an Kaioo vorbei unter sich ausmachen.
Anmerkung: Dieses Problem ließe sich nur lösen, wenn sich Kaioo in die externen Server einloggen würde (so wie das z.B. Meebo macht). Das wäre jedoch aus verschiedenen Gründen nicht wünschenswert: Zum einen können sich Kumpels, insbesondere die, die schon Jabber benutzen, auch selber hinzufügen, wenn das nicht ohnehin schon geschehen ist. Zum anderen würde das die Komplexität des Systems stark vergrößern. Und außerdem ist es fragwürdig, ob Kaioo die ganzen Paßwörter bekommen sollte.
[Bearbeiten] Einloggen von extern
Benutzer, die sich von außen in den Kaioo-Jabber-Server einloggen, müssen als Paßwort das Kaioo-Paßwort benutzen. Sie dürfen alles tun, was auf einem gewöhnlichen Jabber-Server auch möglich ist, insbesondere Kontakte löschen, hinzufügen oder blocken. Kaioo fügt gelöschte Kontakte, die eigentlich auf der Freundesliste stehen, nicht wieder automatisch hinzu, es sei denn, die Freundschaft wird gekündigt und wieder aufgenommen, oder es wird wieder explizit geadded.
Es ist allerdings nicht möglich, weder vom Kaioo-Jabber-Account noch von einem anderen Account aus, einen Kaioo-Benutzer zu adden, der nicht auf der eigenen Freundesliste steht. Steht der andere Benutzer aber auf der Freundesliste, wird ohne Einholung einer weiteren Bestätigung die Authorisierung gegeben. Beides findet ohne weitere Benachrichtigung des anderen Benutzers statt.
Ein Ausnahme ist, wenn der andere Benutzer ebenfalls von extern eingeloggt ist und die Authorisierung bestätigt bzw. ablehnt. Das hat dann die höhere Priorität.
[Bearbeiten] Verknüfung des Jabber-Servers mit der Kaioo-Webseite
Durch das Einloggen in Kaioo ist man auch am Jabber-Server eingeloggt. Die Resource heißt "Kaioo" mit der Priorität "-1". Loggt man sich explizit aus Kaioo aus, oder wird automatisch wegen Inaktivität aus Kaioo ausgeloggt, wird man auch aus dem Jabber-Server ausgeloggt. Es gibt nur die beiden Präsenzen "angemeldet" und "abgemeldet".
Die VCards der Accounts auf dem Jabber-Server enthalten alles, was auch auf dem Profil steht, d.h. Name, Photo, Geburtstag, Kontaktdaten. Man kann die VCard über einen Client zwar verändern, sobald man jedoch das Profil ändert, wird die VCard komplett mit dem aktuellen Kaioo-Profil synchronisiert.
Man kann in der Freundesliste und auf den Profilen der Freunde (eventuell auch an allen anderen Plätzen, also in Bildkommentaren, Forenbeiträgen etc) sehen, ob der Freund online ist. Das ist markiert durch den verlinkten Text "Chat starten". Klickt man drauf, kann man mit diesem Kontakt chatten. (Hier verließen sie ihn; ich habe nämlich viel zu wenig Ahnung von JavaScript, um diesen Punkt weiter auszugestalten; aber es gibt wohl schon freien Code dazu, wenn auch noch keinen richtig brauchbaren.)
Ferner kann man sich auf der Webseite eine Übersicht geben lassen, wer von den eigenen Freunden gerade online ist. Dazu geht man auf die Freundesliste und klickt auf "nur Freunde anzeigen, die online sind".
Freunde, die gerade online sind, erkennt die Webseite schlicht und einfach daran, daß sie auf der Kontaktliste des Kaioo-Jabber-Accounts stehen und online sind. Das bedeutet insbesondere, daß Teilnehmer mit einer nicht-Kaioo-JID auf der Webseite nie Freunde online sehen und auch nicht über die Website chatten können. Aber sie haben ja auch ihren Client.
[Bearbeiten] Technische Machbarkeit mit Jabber
Die Umsetzung kann in mehreren Schritten erfolgen.
[Bearbeiten] Phase 1: Einrichtung eines Servers
Man installiert z.B. einen OpenFire- oder eJabberd-Server. (OpenFire ist Java, keine Ahnung, ob das ein Vorteil ist.)
Die Einrichtung bzw. Löschung eines Kontos auf diesem Server geschieht allein über die Webseite, also Client-besiertes an/abmelden ist im Server abgeschaltet. (Geht ganz leicht.) In dieser Phase kann das Chatsystem nur mit externen Clients benutzt werden. Man darf Kontakte zum Roster hinzufügen oder löschen wie man will, es fühlt sich also wie ein normaler Jabber-Server an – ist es ja auch noch.
Das alles sollte relativ schnell zu bewerkstelligen sein und kann ruhig einige Zeit so gehen, um das System zu konsolidieren und die Konfiguration des Servers zu optimieren.
[Bearbeiten] Phase 2: Implizite Kontaktlisten
Mit einem Skript werden nun einmalig sämtliche Kaioo-Kontakte aus den Kontaktlisten gelöschen, deren Freund man nicht ist, und gleichzeitig alle Freunde, die am Chatsystem teilnehmen, autorisiert.
Fortan geschieht das automatisch: Kaioo-Leute kann man nur adden, wenn sie auf der Freundesliste stehen. Und wenn ein neuer Freund hinzukommt, wird er auch zur Kontaktliste hinzugefügt. Löschen kann man allerdings immer.
Nötig ist also eine Modifizierung des Servers, daß er beim Hinzufügen von Kontakten vorher in der Kaioo-Datenbank nachschaut, ob auch eine Freundschaft besteht.
[Bearbeiten] Phase 3: VCard, Anzeige des Online-Status
Nun wird die Kommunikation zwischen Web-Platform und Jabber-Server weitergetrieben. Bei jeder Änderung des Profils wird entsprechend die VCard auf dem Jabber-Server mit den aktuellen Daten gefüllt. Dabei wird alles, was vorher da drin war, gnadenlos überschrieben.
Gleichzeitig wird bei den Freunden, die gerade online sind, ein "Im Chat online" hinter den Namen/Bild geschrieben. Noch ist das aber nicht anklickbar.
[Bearbeiten] Phase 4: Integration eines Jabber-Clients in Kaioo
Es gibt einen halbgaren Webclient für Jabber basierend auf JavaScript namens JWChat, welcher wiederum auf der JavaScript-Chat-Bibliothek JSJaC aufsetzt. Es gibt mittlerweile auch eine experimentelle Implementierung in GWT. Es gibt ferner mit MUCkl einen Browser-Client für Groupchats.
Das ist sicherlich die schwierigste Phase. Damit ließe ich der obige Chat-System-Vorschlag komplett realisieren. Wenn es nach Phase 3 erstmal hakt, wäre das nicht so schlimm, da dann dennoch schon viel funktioniert, aber richtig sinnvoll wird das ganze natürlich erst mit der Browser-Integration.
