So erstellen Sie eine jabber - /XMPP-proxy - /logging-service?

Ich arbeite für ein Unternehmen, das mit Google Chatzurück (anonyme chat mit einem support-Mitarbeiter in meiner Firma der Fall) als die Haupt-chat-service-Anbieter. Dieser Dienst verwendet das XMPP (ehemals Jabber) Protokoll zum senden und empfangen von Nachrichten.

Unsere Firma hat zehn support-Mitarbeiter-Konten, und Sie sind zugänglich durch die chatzurück service haben wir auf unserer website verwendet. Die Mitarbeiter nutzen sowohl Mac OSX und Windows, zusammen mit den unterschiedlichen clients auf die verschiedenen Betriebssysteme. Der chat ist auch über native apps auf Android und iOS.

Wir brauchen einen service für die Protokollierung der chat-Sitzungen, und wir haben gesucht in proprietäre Lösungen, aber diese werden nicht unterstützt, auf den mobilen Plattformen, und das ist im Grunde der dealbreaker.

Die Lösung, die ich haben beschlossen, ist die Einführung weiterer link in der Nachricht, die Kette, die protokolliert alle Nachrichten. Die Idee ist, dass der server sendet durch diesen proxy, dass Protokolle, die Nachrichten nach, die chat-Sitzung ist es, und dann speichert die Protokolle in geeigneter Weise. Derzeit werden Sie die Speicherung aller Protokolle in einem Dropbox-Ordner, das ist ein Fehler-anfällig Aktivität.

Diese würden in der Theorie, damit unsere Unterstützer, zu verwenden, was os/client, die Sie gewählt haben, und die Protokolle am Ende der gleichen Stelle.

Haben einige tests durchgeführt unter Verwendung der Smack-API, habe ich festgestellt, dass mein XMPP-client (Trillian auf Android und Windows) Antworten auf die Ressource aus, die es zuletzt eine Nachricht empfangen wurde. Dies bedeutet effektiv, dass die sehr einfache chat-logger, die ich umgesetzt haben, wird einfach ignoriert.

Den test durchgeführt wurden, mithilfe des folgenden Codes gepaart mit einem anderen client, der parallel ausgeführt wird. Nur einer der clients die Nachricht erhält.

ConnectionConfiguration config = new ConnectionConfiguration("talk.google.com", 5222, "googlemail.com");
config.setSecurityMode(ConnectionConfiguration.SecurityMode.required);
config.setSASLAuthenticationEnabled(true);
XMPPConnection connection = new XMPPConnection(config);
connection.connect();

Presence presence = new Presence(Presence.Type.unavailable);
connection.login("android_client_username", "android_client_pass");
Message message = new Message("[email protected]");
message.setBody("Hello World!");
connection.sendPacket(message);
connection.sendPacket(presence);
connection.addPacketListener(new PacketListener() {
          public void processPacket(Packet packet) {
             if (packet instanceof Message) {
                Message message = (Message) packet;
                System.out.println(message.getBody()); 
             }
           }
        }, new MessageTypeFilter(Message.Type.chat));
  • Ist es möglich, das erstellen eines solchen proxy mit dem Google Talk-Dienst, d.h. ohne hosting unserer eigenen XMPP-server?
  • Ist es überhaupt möglich, zuzuhören, auf alle Pakete auf dem server per Remote?
  • Wenn nicht, welche alternativen gibt es für den anonymen web-basierte chat-clients nutzen ein offenes Protokoll wie XMPP?

Vielen Dank für Ihre Zeit.

InformationsquelleAutor Jes | 2011-06-22
Schreibe einen Kommentar