2009-04-26 13 views
1

Ich arbeite derzeit an einem Projekt, das eine Java-basierte Desktop-Anwendung für die Verbindung mit einer Website erstellt. Wir möchten IM-Funktionen integrieren, daher haben wir uns für XMPP entschieden.XMPP-Client Inkompatibilitäten

Das Problem ist, dass unsere Anwendung andere Funktionen hat und jeder, der einen anderen Client benutzt, um Probleme mit unserer Webseite zu verursachen (zB kann unser Client unsere Nachrichten mit einem bestimmten Nachrichtentyp versenden, den der Benutzer gewonnen hat kann nicht verwendet werden, aber mit einem anderen Client könnten diese Nachrichtentypen gesendet werden.

Gibt es jemanden, der entweder nur unserem Client den Zugriff auf den XMPP-Server erlaubt oder verhindert, dass andere Clients bestimmte Funktionen verwenden? Ich weiß, dass dies gegen die Idee von offenen Standards ist, aber wir wollen keine proprietäre IM-Lösung von Grund auf erstellen.

+0

Bitte stellen Sie klar: "Unser Client wird in der Lage sein, unsere Nachrichten mit einem bestimmten Nachrichtentyp zu versenden, den der Benutzer nicht verwenden kann, aber mit einem anderen Client könnte er diese Nachrichtentypen senden." Meinst du, dass dein Server nicht in der Lage sein wird, Standard-Clients zu handhaben, oder dass deine Clients nicht mit Standard-Servern arbeiten werden? Ich vermute, ersteres, aber wenn das der Fall ist, ist es nicht offensichtlich, warum Interoperabilität ein Problem wäre. –

+0

Im Wesentlichen möchten wir in der Lage sein, XMPP zu verwenden, um eine Art Statusnachricht (anders als normale IM-Statusänderungen) zu senden, die von einer anderen Funktion unserer Anwendung kommt (z. B. überwacht sie etwas und sendet dann eine Statusmeldung aus) aus). Unser Kunde kann diese Nachrichten mit einem anderen Nachrichtentyp als dem Standardchat senden und empfangen, ein anderer Client jedoch nicht. Wir haben kein Problem damit, dass dies proprietär ist, aber die XMPP-Funktionen sind wirklich nett und ich würde eher etwas wie die Smack-API verwenden und einen XMPP-Server ausführen, als all das selbst. –

Antwort

1

Sie sind Aufbau einer proprietären Lösung, es könnte nur nicht komplett von Grund auf neu sein, und das ist nicht unbedingt eine schlechte Sache. Aber bitte nennen Sie es keinen XMPP-Dienst, es sei denn, Sie werden XMPP-Clients unterstützen. Sie erhalten die gleiche Reaktion wie auf einer "Website", die Ihren proprietären Browser benötigt.

Für Funktionen, die ausgehandelt werden können, schauen Sie sich Feature Negotiation an und Sie können vielleicht sagen, dass Ihr Server keine spezielle Funktion für andere Clients hat, aber heimlich in Ihrem eigenen unterstützt. Das wird nicht verhindern, dass etwas versucht wird, also ist es eine ziemlich schlechte Lösung.

Sie können Instant Messaging-Funktionen erhalten, ohne eine Desktop-Anwendung zu erstellen (mit all den damit verbundenen Problemen bei der Plattformunterstützung). Betrachten Sie Orbited, die Ihnen die Instant Messaging-Interaktivität geben kann, nach der Sie suchen, und die Integration auf dem Server wesentlich vereinfachen würde.

Und nur als Nebenpunkt, sollte es keine Nachrichten, die Probleme mit Ihrer Website führt, nicht mehr als könnte es eine URL sein, dass es zu Problemen führt, oder eine Abfrage-Kombination etc.

+0

Wir brauchen die Desktop-Anwendung wegen der anderen Funktionen. XMPP ist so einfach zu bedienen, dass ich lieber einen XMPP-Server ausführen und die Smack-API verwenden würde.Das Problem ist, ich möchte es nicht als XMPP-Dienst bezeichnen, und ich möchte nicht, dass andere XMPP-Clients funktionieren, aber ich sehe keine Möglichkeit, Clients zu ignorieren, die nicht unsere sind. Ich denke, das Äquivalent wäre etwas wie Steam, wo Sie ein IM-Programm auf all den anderen Sachen Steam (Verwalten von Spielen, ihren Laden, etc) hat. Wir wollen nicht, dass jemand seinen eigenen IM-Client schreiben kann, weil wir wollen, dass unser Client für alles andere läuft. –

+0

Humm. Wie wäre es mit Hijacking der Verbindungsauthentifizierung? Vielleicht verwenden Sie einen separaten Authentifizierungsdienst, der ein Token zurückgibt, das Sie an die Verbindungs-API weitergeben können. Blockiert andere Clients vom Verbinden, da sie nicht denselben Tanz ausführen können. Irgendwie hässlich vielleicht. – Joel

+0

@Joel - Sie interessieren sich vielleicht für die Pubsub-Sachen, die ich erwähnt habe. Sie können eine Whitelist von Benutzern erstellen, die auf einen bestimmten Knoten zugreifen können, um Ihnen die gewünschte Sicherheit zu geben. – Robin

0

Nicht sicher von all deinen Anforderungen, aber es klingt, als ob du wahrscheinlich die pubsub- oder pep-Funktionen von XMPP verwenden könntest. Dies sind Erweiterungen von XMPP, mit denen Sie spezielle Payloads erstellen können, auf die von Benutzer zu Benutzer-Ebene zugegriffen werden kann (Personal Eventing Protocol XEP-0163). Wenn es nur eine allgemeine Benachrichtigung an alle Interessierten ist, dann kann PubSub (XEP-0060) das sein, was Sie wollen.

Diese Protokolle ermöglichen die Sicherung des Zugriffs auf die Pubsub-Knoten und werden von den Standard-Chat-Nachrichten nicht beeinflusst, da es sich um ein anderes Protokoll handelt.

Verwandte Themen