ubuntuusers.de

Jabber + JavaScript ??

Status: Ungelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

Yoschi

Anmeldungsdatum:
11. April 2009

Beiträge: 454

Hallo !

Ich probiere mich zur Zeit daran, einen Javascript - Jabber Clienten zu schreiben (so jwchat mäßig), bzw. eine Lib, die das macht. Das ganze soll dabei serverunabhängig sein (also auch direkt zu zb. ubuntu-jabber verbinden können), und irgendwelche Beschränkungen durch Header (Allow-Access glaub ich wars) spielen keine Rolle (am Ende solls eig. gar keine Internetseite werden, sondern ne webOS App).

Wenn man seine Lieblingssuchmaschine anwirft, findet man auch einiges dazu, zum Beispiel Strophe oder JsJac.

Strophe funktioniert aber nur mit BOSH (ich hab gehört, das wird nicht von allen Servern unterstützt ? ) und JsJac hat jede Menge Fehler (1.3.2 und trunk Version; jede Menge nicht definierte Variablen, an denen dann vergleiche scheitern: "xy of undefined ..." )

Ich hab mal mit XMLHttpRequests rumgespielt und bekomme entweder gar keine Antwort oder einen Fehler 101. Über das curl - Kommandozeilenprogramm funktioniert es mehr oder weniger (ich bekomm ne Xml Bad formed Antwort, das liegt aber dann wohl an mir).

Kann mir irgendwer vlt. mal ein Beispiel als Anstoß geben oder kennt wer ne funktionierende Lib ?

Yoschi

raziel

Avatar von raziel

Anmeldungsdatum:
3. Mai 2005

Beiträge: 119

Wohnort: /dev/null

Eigentlich ist XMPP over BOSH die Standard-Methode fuer JavaScript basiertes XMPP und wuerde ich auch empfehlen.

Strophe ist da eigentlich ganz nett, ich hab da schon selbst mal einen MUC geschrieben: http://git.almighurt.gotdns.org/?p=serenity.git&a=summary

Yoschi

(Themenstarter)

Anmeldungsdatum:
11. April 2009

Beiträge: 454

Ich hab jetzt mal das Basic - Beispiel versucht zum Laufen zu bringen ... Als BOSH_SERVICE habe ich "http://ubuntu-jabber.de:5222" eingestellt. Er zeigt auch was von SENT an, aber ich bekomme keine Antwort. Die Logs sagen dass er irgendeinen mysteriösen Statuscode 0 zurückbekommen hat. Soll ja sowas heißen wie "response is empty"

raziel

Avatar von raziel

Anmeldungsdatum:
3. Mai 2005

Beiträge: 119

Wohnort: /dev/null

Die XMLHttpRequest Grundlagen sind dir bekannt? Man kann da nicht einfach wild an verschiedene Domains requests abschicken, die sind grundsaetzlich erstmal an eine Domain gebunden ("Same Origin Policy"), und zwar an die, von der das JavaScript geladen wurde. Es gibt da diverse Ansaetze, das zu umgehen (Stichwort: "Cross Domain XHR" oder "Cross-Site XHR").

Zusaetzlich noch kann man nicht einfach einen Jabber-Server inkl. Port angeben, zu dem sich z.B. Strophe.js dann verbinden soll. Eine rudimentaere Einfuehrung, wie man einen Server auf die Zusammenarbeit mit Strophe einstellt, gibts hier.

Yoschi

(Themenstarter)

Anmeldungsdatum:
11. April 2009

Beiträge: 454

Ja, ist mir bekannt, aber in einer "nicht-Internetseite-App" sollte das keine Rolle spielen, zumal es ja zu einem PHP - Script auf meinem Webspace (DB Anbindung; anderes Prog) auch wunderbar funktioniert.

Yoschi

(Themenstarter)

Anmeldungsdatum:
11. April 2009

Beiträge: 454

Anscheinend liegt der Fehler irgendwie bei der Verbindung speziell bei Jabber Servern mit Strophe:

  • Strophe + Kein Jabber Server: Funktioniert, der Anfang der Seite wird in den Logs auch angezeigt.

  • Strophe + Jabber Server Nichts, nur Fehler 0 (siehe unten)

  • XHR manuell + Kein Jabber Server: Funktioniert, auch schon öfters verwendet

  • XHR manuell + Jabber Server: Funktioniert auch, inkl. "korrekter" (heißt not-well-formed) Antwort (ich hab keine wirkliche Anfrage gesendet)

Der Log sieht so aus:

Strophe : _throttledRequestHandler called with 1 requests
Strophe : request id 1.0 posting
Strophe : request id 1.0 state changed to 1
Strophe : request id 1.1 state changed to 2
Strophe : request id 1.1 state changed to 3
Strophe : request id 1.1 state changed to 4
Strophe : request id 1.1 error 0 happened
Strophe : request errored, status: 0, number of errors: 1

edit: Komisch, mit einer richtigen Anfrage bekomme ich auch ne falsche Antwort (manuell XHR & curl):

Anfrage:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<body content='text/xml; charset=utf-8'
    from='yoschi@ubuntu-jabber.de'
    hold='1'
    rid='1573741820'
    to='ubuntu-jabber.de'
    secure='false'
    wait='60'
    xml:lang='en'
    xmpp:version='1.0'
    xmlns='http://jabber.org/protocol/httpbind'
    xmlns:xmpp='urn:xmpp:xbosh' />

Antwort:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
<?xml version='1.0'?>
<stream:stream
  xmlns='jabber:client'
  xmlns:stream='http://etherx.jabber.org/streams'
  id='1006448558'
  from='brauchen.info'
  version='1.0'>
    <stream:error>
        <xml-not-well-formed xmlns='urn:ietf:params:xml:ns:xmpp-streams'/>
    </stream:error>
</stream:stream>
Antworten |