Hat jemand eine Open-Source-XMPP-Bibliothek geschrieben, die WebSockets verwendet und von einem Browser ausgeführt werden soll?Gibt es eine Open-Source-WebSockets (JavaScript) XMPP-Bibliothek?
Antwort
Wir haben noch nicht einen Standard für XMPP über WebSockets, dass die Server implementieren können, die vor der Client-Seite erforderlich sein wird, kann angemessen in Angriff genommen werden.
Der erste Schritt besteht darin, die WebSocket-Standardisierung abzuschließen. Es sieht so aus, als könnte dies in einer IETF HyBi-Arbeitsgruppe passieren, die zum Zeitpunkt der Abfassung noch nicht von der IESG genehmigt wurde. Es gab ein HyBi Birds-of-a-Feather (BoF) auf der IETF-Konferenz in Hiroshima vor ein paar Wochen (siehe meeting materials), was ziemlich gut ging.
Nachdem WebSockets eine stabile Referenz hat und sich zu beruhigen scheint, erstellt die XSF eine XEP, die XMPP an WebSockets bindet, vermutlich mit einer Zeilengruppe pro WebSocket-Frame.
Bearbeiten: Jack Moffitt hat eine IETF Internet-Draft mit einem ersten Durchlauf bei einem Protokoll geschrieben, das verwendet werden kann. WARNUNG. Dies wird sich wahrscheinlich noch drastisch ändern. Implementiere es nur, wenn du bereit bist, es später komplett zu entfernen. WARNUNG.
Es ist ein Buch, in kürze, die dieses Thema abdeckt ...
Professional XMPP with JavaScript and jQuery alt text http://ecx.images-amazon.com/images/I/51B7VAHw8OL._SL500_AA240_.jpg
Aber ich nehme an, Sie wollen nicht für das Buch warten. Also sehen Sie sich the Jack Moffitt's presentation from JSConf an. Ich habe es heute Morgen gesehen. (Jack Moffitt ist der Autor des Buches, das mit oben verbunden ist.)
Die betroffene Bibliothek (JavaScript- und C-Implementierungen) ist Strophe.
Dies ist ein sehr fruchtbares Gebiet der Exploration, aber sehr roh. Wir werden bald mehr sehen. WebSockets kommen mit HTML5, ist das richtig?
In der Tat sind WebSockets Teil von HTML5; Google Chrome hat sie implementiert –
Es gibt mehrere Lösungen (keiner von ihnen sind perfekt)
1. Verwenden Kaazing.
Sie unterstützen es bereits. Es ist Open Source, aber sie haben eine Art von dual license, also überprüfen Sie besser, ob Sie für Ihr Projekt verwenden können oder nicht.
2. Kombinieren js.io und APE (Ajax Push-Motor)
APE ist ein Comet Rahmen, aber sie begannen vor kurzem Websockets unterstützen. Auf ihrer Website ("APE als Proxy" -Abschnitt), sagen sie, dass sie js.io-Bibliotheken ausführen können, die xmpp.js enthält, so dass sie kombinieren können.
3.Verwenden Sie Caucho
Es ist ein Java-basiertes Framework ähnlich wie APE, die One-Stop-Shop Comet-Lösung bietet, und sie scheinen beide XMPP und WebSockets
4 zu unterstützen Bitten Sie das Strophe-Team, WebSocket zu unterstützen.
Strophe macht XMPP über BOSH (Bidirektionale Streams über synchrone HTTP), aber es gibt auch a discussion about supporting WebSockets.
Jack Moffitt (der Hauptentwickler und der Autor des oben erwähnten Buches) scheint sich für WebSockets zu interessieren, aber wir müssen mehr begründen, warum sie WebSocket über BOSH unterstützen müssen. Wenn Sie gute Antworten haben, treten Sie bitte dem Profil bei.
Ich versuchte gerade ihre xmpp,bosh,strophe echobot example, die gut funktionierte. Sie können es auch ausprobieren, um zu sehen, ob es Ihren Anforderungen entspricht oder nicht.
Für # 2 und # 3, sie sagen, dass beide XMPP und Websockets unterstützen, aber nicht sicher, ob sie zusammenarbeiten.
Welche Art von Anwendung Sie über XMPP & WebSockets für denken?
Die folgenden sind Vorschläge für Alternativen.
- Wenn Sie die Präsenz wollen, Chat, Chat-Raum gleichwertige Funktionalität, können Sie Wave-Gadget oder Roboter machen, setzen dann außen mit Wave Embed API (toter Link, für historische Zwecke gehalten). Wave ist eigentlich auf XMPP aufgebaut.
- Wenn Sie nur nach sehr niedrigen Latenz Messaging-Funktion suchen, könnten Sie .
- Wenn Sie nach viel einfacheren Nachrichten-Streaming suchen, können Sie einfach pipe in/out unix file as I demonstrated here.
Ich habe die meisten der oben genannten Informationen, wenn ich schrieb this blog post. Wenn Sie den Kommentarbereich von Zeit zu Zeit überprüfen, werde ich das Update veröffentlichen, sobald ich andere Lösungen finde.
> Welche Art von Anwendung Sie über die Verwendung von XMPP & WebSockets für denken? Ich hatte nicht unbedingt etwas bestimmtes im Sinn; Im Allgemeinen würde XMPP over WebSockets natürlich ein Framework und ein Protokoll für echte ereignisbasierte Webanwendungen bereitstellen, was die Benutzerfreundlichkeit für z.: * Web-basierte E-Mail * Web-basierte Zusammenarbeit * Echtzeit-Datensynchronisation * Echtzeit-Updates * Browser Die Kombination dieser beiden Technologien des Browser-Kommunikation sowie leistungsfähige Client-Seite JavaScript Motoren, scheinen eine Menge Möglichkeiten für moderne Web-Apps zu eröffnen. –
Strophe unterstützt nun Websockets. Ich habe die Möglichkeit, entweder Websocket oder BOSH für die Verbindung zu verwenden. – Robin
Ich bin mir nicht sicher, warum Sie speziell nach einer WebSocket-Lösung fragen, weil die XMPP-Server dies zuerst unterstützen müssten.
Allerdings gibt es mehrere XMPP JavaScript-Bibliotheken zur Verfügung (soweit ich sehen, dass sie alle BOSH Methode):
- Dojo Toolkit hat eine XMPP extension library
- JS.io
- JSJac
- Strophe.js
- xmpp4js
- Z-XMPP
Diese Beispiele wurden aus dem XMPP Website genommen, die Open-Source-Implementierungen des XMPP-Protokolls aufgeführt sind.
Links sind generell nicht als Antworten akzeptabel. Formulieren Sie eine spezifische Antwort in Ihren eigenen Worten und verwenden Sie den Link als Referenz. Erwähnen Sie mich nach dem Bearbeiten, damit ich meinen Downvote entfernen kann. – markus
@markus: Danke für die Anmerkungen. Ich habe die Antwort behoben. – MKroehnert
Frage fragt speziell nach JavaScript XMPP-Bibliotheken, die WebSockets und nicht BOSH unterstützen. –
Ich bin nicht sicher, JS auf Browser-Seite kann Websocket-Protokoll allein behandeln, da es meist auf Browser-API angewiesen. Nur wenige Browser-Unterstützung websocket: Chrome, Safari5, vielleicht Firefox4. Es gibt viele Problemumgehungen basierend auf flash/as3 (dann kommuniziert Ihre js mit Flash-Code) die Hauptbeschränkung ist, dass Flash keine sichere Verbindung unterstützt (schade).
BWT, können Sie überprüfen, this websocket implem Sie bieten OpenSource-Java-WebSocket Client-Bibliothek und scheint mit XMPP Zeug zu tun und wenn Sie durchsuchen die Repositories finden Sie grundlegende As3 WebSocket-Implementierung.
JSJaC implementiert XMPP Over Websockets. Es ist bekannt, mit mehreren Back-End-Implementierungen zu arbeiten:
- Knoten-xmpp-bosh - RFC6455 und arbeitet ohne Probleme seit 0.6.1 unterstützt, ist es auch transparent verwendet STARTTLS ggf.
- WXG - unterstützt RFC6455 und funktioniert ohne Probleme, aber kann keine Verbindung zu Servern STARTTLS erforderlich (Original wxg hat einige Probleme, die von Gordin behoben wurden).
- ejabberd-WebSockets - - nicht Unterstützung RFC6455 daher ist es nicht funktioniert, ist es die Anpassung RFC6455 unterstützen sollte für jedermann ganz einfach sein Erlang wissen
- Openfire (einige Arbeit in Fortschritte auf Github zu finden) inoffizielle Plugin ist vorhanden, aber es fehlt Unterstützung für RFC6455 daher ist es nicht
- Apache Vysper funktioniert - nicht nicht RFC6455 unterstützen daher nicht
- Tigase funktioniert - keine bekannten arbeiten an WebSocket Unterstützung
- MongooseIM - eine Gabel von Ejabberd mit Unterstützung für XMPP über Websockets.
- 1. Gibt es eine JavaScript-Alternative zu isNaN()?
- 2. Gibt es eine hashmap-Bibliothek für JavaScript?
- 3. Gibt es eine sichere Verzögerung in JavaScript?
- 4. Gibt es eine Fensterverwaltungsbibliothek in JavaScript?
- 5. Gibt es eine JavaScript-iCalendar-Bibliothek?
- 6. Gibt es eine Alternative zu JavaScript-Schleife?
- 7. JavaScript: Gibt es eine utils-Bibliothek?
- 8. Gibt es eine Calculus-Bibliothek für JavaScript?
- 9. Javascript-Optimierung - Gibt es eine einfachere Möglichkeit, Javascript zu beschleunigen?
- 10. Gibt es eine Möglichkeit, eine Seite durch JavaScript zu erkennen?
- 11. Gibt es JavaScript-Syntax-Textmarker?
- 12. Gibt es statische JavaScript-Analysetools?
- 13. Gibt es Zeiger in Javascript?
- 14. Gibt es eine Möglichkeit, alle JavaScript-Timer gleichzeitig zu löschen?
- 15. Gibt es eine Möglichkeit, Metadaten zu JavaScript-Objekten hinzuzufügen?
- 16. Gibt es eine reine JavaScript-Implementierung von IndexedDb?
- 17. Gibt es eine dokumentierte JavaScript-API für Windows Media Player?
- 18. Gibt es eine integrierte JavaScript-Funktion zum Verarbeiten einer Zeitzeichenfolge?
- 19. Gibt es eine endgültige Lösung für Fließkommafehler in Javascript?
- 20. Warum gibt es eine potentielle Endlosschleife in meinem JavaScript-Code?
- 21. Gibt es eine Möglichkeit, diese Javascript-If-Anweisung zu vereinfachen?
- 22. Gibt es eine gleichwertige Javascript- oder Jquery-Schlaffunktion?
- 23. Gibt es eine Javascript-Funktion, die einen Bruch reduziert
- 24. URI-Vorlagen: Gibt es eine RFC-6570-Implementierung in Javascript?
- 25. Gibt es eine JavaScript-Funktion ähnlich der Python Counter-Funktion?
- 26. Gibt es eine maximale Javascript-Dateigröße, was können Browser verarbeiten?
- 27. Gibt es eine umgekehrte Funktion von preventDefault() in JavaScript?
- 28. Gibt es eine Möglichkeit, das JavaScript-Attribut standardmäßig zu verwenden?
- 29. Gibt es eine Möglichkeit, Git-Tags mit JavaScript
- 30. Gibt es eine Möglichkeit Javascript Intrinsic Objects in C#
Jetzt gibt es Strophe: http://strophe.im/strophejs/ – alexk