2012-03-30 15 views
0

Ich versuche, einen xmpp-Client auf meiner Website einzurichten, um vertraut zu werden, folgen ich den Beispielen des Buches. Ich habe Beispiel 3 implementiert, indem ich den Code kopiert habe. Die einzigen Dinge, die ich geändert habe, waren die strophe-Verbindungsadresse zu "http: // localhost: 5280/http-bind /", die funktioniert, und die Script-Pfade. Wenn ich auf localhost/hello.html zeige, wird es wie erwartet geladen. Wenn ich meine Zugangsdaten eingebe und drücke, passiert nichts. Wäre das ein Fehler bei der js?Beispiel 3 von "Professionelle XMPP-Programmierung mit JavaScript und jQuery" - Connect-Schaltfläche funktioniert nicht

-Code ist die gleiche wie in Kapitel 3 here

Edit: Das Problem mit der Verbindungstaste war, dass die strophe und flxhr js nicht korrekt geladen wurde. Jetzt funktioniert der connect-Button und ruft die binded connect-Funktion auf und schließt das Dialogfeld. Die verbundenen und nicht verbundenen Funktionen werden jedoch nicht aufgerufen, so dass nichts passiert, nachdem ich die Verbindung gedrückt habe. Was würde das verursachen?

+0

Haben Sie tatsächlich einen XMPP-Server mit BOSH? Bekommst du mit einem Browser eine Antwort auf die URL? – ggozad

+0

Ja. Ich führe ejabberd mit mod_http_bind aktiviert und http-bind für Port 5280 aktiviert. Http: // localhost: 5280/http-bind funktioniert – sirgawain

+0

Was ist das Firebug-Ergebnis? – Muneeb

Antwort

2

Der beste Weg, Strophe.js Probleme zu debuggen, ist den Drahtverkehr zu beobachten. Sie können dies auf zwei verschiedene Arten tun.

1) Öffnen Sie das Netzwerkfenster von Firebug oder in den Entwicklertools von Chrome oder Safari. Sie können dort alle Beiträge und die Antworten von Strophe sehen. In diesem Fall möchten Sie einige davon sehen, die das ursprüngliche XMPP-Setup plus Authentifizierung enthalten. Wenn die Verbindung überhaupt nicht hergestellt werden kann, wird normalerweise nur ein einzelner POST angezeigt, der einen Fehler enthält. Wenn das der Fall ist, poste den Fehler und vielleicht kann ich ihn diagnostizieren.

2) Definieren Sie eine Logging-Funktion für Strophe und lassen Sie sie ausdrucken, worum es geht. Dies funktioniert gut, wenn Sie eine BOSH-Sitzung aufbauen, aber ansonsten Probleme haben. Um dies zu tun:

Sie könnten es auch Dinge in das DOM anhängen, anstatt console.log zu verwenden, um auf die JavaScript-Konsole zu schreiben.

Weitere Debugging-bezogene Informationen, können Sie tun:

Strophe.log = function (lvl, msg) { console.log("LOG: " + msg); }; 

glaube ich, dass Kapitel 4 einige dieser Techniken abdeckt.

0

Ich habe dieses Beispiel versucht und es hat für mich funktioniert. Wenn Sie also den JS-Code nicht geändert haben, muss das Problem vom ejabberd-Server-Setup stammen. Meistens ist es dein Hostname Setup in ejabberd.cfg. Ich hätte gerne ein paar Dinge versuchen:

  1. In ejabberd.cfg Datei, stellen Sie sicher, localhost in dieser Zeile ist:

    {Gastgeber, [ "localhost"]}.

  2. Wenn der Hostname in Ordnung ist, erhöhen Sie Ihren Ejabberd-Loglevel auf 5 und starten Sie ejabberd neu. Veröffentlichen Sie die Ejabberd-Fehlermeldung hier und wir können es gemeinsam herausfinden.