2017-12-17 3 views
0

Ich habe einen ejabberd Server läuft und läuft. Ich kann es über web clients testen und es funktioniert gut mit BOSH-Verbindungen.Einrichten von ejabberd über websockets

Ich möchte jetzt über Web-Sockets mit ihm verbinden, und ich bin mir nicht sicher, was ich vermisse, damit es funktioniert, ich weiß es einfach nicht. Hier

ist ein Auszug aus meinem ejabberd.yml

hosts: 
    - "localhost" 
    - "somedomain.com" 
    - "im.somedomain.com" 

listen : 
    port: 5280 
    ip: "::" 
    module: ejabberd_http 
    request_handlers: 
     "/websocket": ejabberd_http_ws 
     "/pub/archive": mod_http_fileserver 
    web_admin: true 
    http_bind: true 
    ## register: true 
    ## captcha: true 
    tls: true 
    certfile: "/etc/ejabberd/ejabberd.pem" 

Jetzt habe ich versucht, einen Web-Buchse über Javascript zu öffnen, wie folgt:

var ws = new WebSocket("ws://somedomain:5280/websocket/");

ich ERR_CONNECTION_TIMED_OUT im Gegenzug zu bekommen. Ich habe nichts in Ejabberds Logs, wenn ich versuche, einen Weksocket zu öffnen. Ich habe Protokolle der BOSH-Verbindungen.

Ich bin mir nicht sicher, ob ich richtig teste, noch wenn mein Server richtig eingerichtet ist.

Jeder Vorschlag ist sehr willkommen.

Antwort

1

Verbindung Timeout-Fehler wird vom Server aus, wenn der Client nicht Antwort an den Server pong sendet sicherstellen, dass Sie die pong senden response.If Sie Strophe.js verwenden freundlich Handlers überprüfen http://strophe.im/strophejs/doc/1.2.14/files/strophe-js.html#Strophe.Connection.addHandler

connection = new WebSocket("ws://somedomain:5280/websocket/"); 

//Adding ping handler using strophe connection 
    connection.addHandler(pingHandler, "urn:xmpp:ping", "iq", "get"); 

//Ping Handler Call back function 
    function pingHandler(ping) { 
     var pingId = ping.getAttribute("id"); 
     var from = ping.getAttribute("from"); 
     var to = ping.getAttribute("to"); 
     var pong = strophe.$iq({ 
      type: "result", 
      "to": from, 
      id: pingId, 
      "from": to 
     }); 
     connection.send(pong); 
     return true; 
    } 

Sie sollten diese Konfiguration auch zu Ihrem ejabberd.yml

websocket_ping_interval: 50 
websocket_timeout: 60 
hinzufügen