configuraciones

push para enviar mensaje en modo offline

https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/reverse-proxy-with-url-rewrite-v2-and-application-request-routing


mod_echo: {}
mod_pubsub:
    access_createnode: local #pubsub_createnode

------------------------
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
<httpProtocol>
            <customHeaders>
                <add name="Access-Control-Allow-Origin" value="*" />
                <add name="Access-Control-Max-Age" value="1000" />
                <add name="Access-Control-Allow-Methods" value="POST, GET, OPTIONS, DELETE, PUT" />
                <add name="Access-Control-Allow-Headers" value="X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding" />
            </customHeaders>
        </httpProtocol>
<rewrite>
            <rules>
                <rule name="ReverseProxyInboundRule1" stopProcessing="true">
                    <match url="bosh" />
                    <action type="Rewrite" url="http://im.server.com:5280/bosh" appendQueryString="false" />
                </rule>
            </rules>
        </rewrite>
<httpErrors errorMode="DetailedLocalOnly" />
        <directoryBrowse enabled="false" />
    </system.webServer>
</configuration>
----------------

var Iniciar = {
    user: 'user1@im.server.com',
    pass: 'user1',
    conexion: null,
    conectado: false,
    mostrar_raw: true,
    mostrar_log: true,

    log: function(msg){
        if (Iniciar.mostrar_log &&  window.console) {
            console.log(msg);
        }
    },

    raw_entrada: function(data){
        if (Iniciar.mostrar_raw) {
            Iniciar.log('Resp.S  '+ data);
        }
    },

    raw_salida: function(data){
        if (Iniciar.mostrar_raw) {
            Iniciar.log('Resp.C  ' + data);
        }
    },

    on_presence(presence){
        var presence_type = $(presence).attr('type'); // unavailable, subscribed, etc...
        var from = $(presence).attr('from'); // the jabber_id of the contact
        if (presence_type != 'error'){
            if (presence_type === 'unavailable'){
                // Mark contact as offline
            }else{
                var show = $(presence).find("show").text(); // this is what gives away, dnd, etc.
                if (show === 'chat' || show === ''){
                    // Mark contact as online
                }else{
                    // etc...
                }
            }
        }
    return true;
    }
}
/*
*1. Primero iniciar conexion BOSH
*2. Enviar un escuchador al servidor
*3. Iniciar seccion jid
*/

$(document).ready(function () {
    Iniciar.log('Iniciando conexion');
    //document.write();
    //var user= 'user1@im.server.com';
    //var pass= 'user1';
    $('#cuadro').append("1 de 3 conectado");
    $(document).trigger('conectar');
});
 



$(document).bind('conectar', function () {
    //conexion
    var conn = new Strophe.Connection('http://192.168.0.6:5280/bosh');
    Iniciar.conexion = conn;
    Iniciar.conexion.rawInput = Iniciar.raw_entrada;
    Iniciar.conexion.rawOutput = Iniciar.raw_salida;
    //escuchador server
    Iniciar.conexion.addHandler(Iniciar.on_presence, null, "presence");
    //-ERROR
    //iq = $iq({type: 'get'}).c('query', {xmlns: 'jabber:iq:roster'});
    //Iniciar.conexion.addHandler(iq, Iniciar.on_presence);
    //Iniciar.conexion.sendIQ(iq, null, "message", null, null);
    //.connection.addHandler(Control.on_result, null, "message", null, null);
    // connection.addHandler(Control.on_result, null, "message", null, null);
    //seccion jid

    ///-ERROR
 
    Iniciar.conexion.connect(
                    Iniciar.user,
                    Iniciar.pass,
                    function(status){
                        if(status == Strophe.Status.DISCONNECTED){
                            Iniciar.log('Desconectado');
                        } else if(status == Strophe.Status.CONNECTING){
                            Iniciar.log('conectado...');
                        } else if( status == Strophe.Status.CONNFAIL){
                            Iniciar.log('Conexion Fallida!');
                        }else if(status == Strophe.Status.CONNECTED){
                            $('#cuadro').append(' 2 de 3 conectado ');
                            $(document).trigger('conectando');
                        }
                    }
    );

    $('#salir').click(function(){
        $('#cuadro').append(' user1 ha salido');
        conn.disconnect();
        conexion = null;
    });
});

$(document).bind('conectando', function () {
    Iniciar.log('Conectado...');
    $('#cuadro').append(' 3 de 3 conectado ');
    $('#cuadro').append('El usuario esta conectado'); 
});

----------------------------------------

apache

ProxyRequests Off
<Proxy *>
  AddDefaultCharset UTF-8
  Options +MultiViews
  Order deny,allow
  Deny from all
  Allow from all
</Proxy>

ProxyPass /xmpp-httpbind ws://localhost:5280/ws
ProxyPassReverse /xmpp-httpbind ws://localhost:5280/ws
RewriteEngine On
RewriteRule /xmpp-httpbind ws://localhost:5280/ws

##ProxyPass /xmpp-httpbind http://localhost:5280/bosh/
##ProxyPassReverse /xmpp-httpbind http://localhost:5280/bosh/
##RewriteEngine On
##RewriteRule /xmpp-httpbind http://localhost:5280/http-bind/


register.js

var connection = null;
var server_dominio = 'imserver';
var BOSH_SERVICE  = '/xmpp-httpbind';

$(document).ready(function () {
    connection = new Strophe.Connection(BOSH_SERVICE);
    $('#register').bind('click', function () {

        var user = $("#username").val();
        var pass = $("#password").val();

        connection.register.connect(server_dominio,function (status) 
        {
             console.info(status);  
            if (status === Strophe.Status.REGISTER) 
            {
              connection.register.fields.username = user;
              connection.register.fields.password = pass;
              console.info("registrando...",user," status ",status);
              connection.register.submit();
            }
            else if (status === Strophe.Status.REGISTERED) 
            {
              console.info("Usuario registrado",user," status ",status);
              //connection.disconnect();
              connection.authenticate();
            } else if (status === Strophe.Status.CONFLICT) {
                alert('El usuario ya existe');
                console.log("El usuario ya existe");
            } else if (status === Strophe.Status.NOTACCEPTABLE) {
                alert('NOTACCEPTABLE');
                console.log("Registration form not properly filled out.");
            } else if (status === Strophe.Status.REGIFAIL) {
                alert('El servidor no acepta otro regsitro, espere 10 minutus');
                console.log("The Server does not support In-Band Registration");
            } else if (status === Strophe.Status.CONNECTED) {
                connection.send($pres());
                updateConnButton(true);
                console.log("connected");
            }
            else if (status === Strophe.Status.DISCONNECTING) {
              console.log("Disconneting..."," status ",status);
            }
            else if (status === Strophe.Status.DISCONNECTED) {
              console.log("Disconneted."," status ",status);
            }
            else {
            }    
        });
    });
});
----------volver a conectar
Resp.C  <body rid='2351990984' xmlns='http://jabber.org/protocol/httpbind' to='im.rtedesw29.com' xml:lang='en' wait='60' hold='1' content='text/xml; charset=utf-8' ver='1.6' xmpp:version='1.0' xmlns:xmpp='urn:xmpp:xbosh'/>
pruebas.js:11 Resp.S  <body xmlns='http://jabber.org/protocol/httpbind' xmlns:xmpp='urn:xmpp:xbosh' xmlns:stream='http://etherx.jabber.org/streams' xmpp:version='1.0' authid='568997434488436803' sid='a21fe039c41a217442387ab712ddb553dade3afd' wait='60' ver='1.11' polling='2' inactivity='30' hold='1' xmpp:restartlogic='true' requests='2' secure='true' maxpause='120' from='im.rtedesw29.com'/>
pruebas.js:11 Conexion Fallida!
strophe.js:5662 XHR finished loading: POST "http://192.168.254.60:5280/bosh".
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_connect @ strophe.js:5170
connect @ strophe.js:3051
(anonymous) @ pruebas.js:71
mightThrow @ jquery-3.3.1.js:3534
process @ jquery-3.3.1.js:3602
setTimeout (async)
(anonymous) @ jquery-3.3.1.js:3640
fire @ jquery-3.3.1.js:3268
fireWith @ jquery-3.3.1.js:3398
fire @ jquery-3.3.1.js:3406
fire @ jquery-3.3.1.js:3268
fireWith @ jquery-3.3.1.js:3398
ready @ jquery-3.3.1.js:3878
completed @ jquery-3.3.1.js:3888
pruebas.js:11 Desconectado
-----------------  conectando
conectado...
pruebas.js:11 Resp.C  <body rid='967555665' xmlns='http://jabber.org/protocol/httpbind' to='im.rtedesw29.com' xml:lang='en' wait='60' hold='1' content='text/xml; charset=utf-8' ver='1.6' xmpp:version='1.0' xmlns:xmpp='urn:xmpp:xbosh'/>
strophe.js:5662 XHR finished loading: OPTIONS "http://192.168.254.60:5280/bosh".
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_connect @ strophe.js:5170
connect @ strophe.js:3051
(anonymous) @ pruebas.js:71
(anonymous) @ jquery.min.js:27
(anonymous) @ jquery.min.js:27
each @ jquery.min.js:21
ready @ jquery.min.js:27
pruebas.js:11 Resp.S  <body xmlns='http://jabber.org/protocol/httpbind' xmlns:xmpp='urn:xmpp:xbosh' xmlns:stream='http://etherx.jabber.org/streams' xmpp:version='1.0' authid='832827824493829973' sid='4302eda0c641a82a25f44ce1b5adb9e912de49f5' wait='60' ver='1.11' polling='2' inactivity='30' hold='1' xmpp:restartlogic='true' requests='2' secure='true' maxpause='120' from='im.rtedesw29.com'><stream:features><mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'><mechanism>PLAIN</mechanism><mechanism>DIGEST-MD5</mechanism><mechanism>X-OAUTH2</mechanism><mechanism>SCRAM-SHA-1</mechanism></mechanisms><register xmlns='http://jabber.org/features/iq-register'/></stream:features></body>
6XHR finished loading: POST "<URL>".
pruebas.html:1 XHR finished loading: POST "http://192.168.254.60:5280/bosh".
strophe.js:5662 XHR finished loading: POST "http://192.168.254.60:5280/bosh".
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_onIdle @ strophe.js:5455
_onIdle @ strophe.js:4467
(anonymous) @ strophe.js:5789
setTimeout (async)
_send @ strophe.js:5788
send @ strophe.js:3270
_attemptSASLAuth @ strophe.js:4018
authenticate @ strophe.js:4070
_connect_cb @ strophe.js:3945
_onRequestStateChange @ strophe.js:5559
XMLHttpRequest.send (async)
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_connect @ strophe.js:5170
connect @ strophe.js:3051
(anonymous) @ pruebas.js:71
(anonymous) @ jquery.min.js:27
(anonymous) @ jquery.min.js:27
each @ jquery.min.js:21
ready @ jquery.min.js:27
strophe.js:5662 XHR finished loading: POST "http://192.168.254.60:5280/bosh".
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_onIdle @ strophe.js:5455
_onIdle @ strophe.js:4467
(anonymous) @ strophe.js:5789
setTimeout (async)
_send @ strophe.js:5788
send @ strophe.js:3270
_sasl_challenge_cb @ strophe.js:4088
run @ strophe.js:2556
(anonymous) @ strophe.js:3822
forEachChild @ strophe.js:1522
_dataRecv @ strophe.js:3810
_onRequestStateChange @ strophe.js:5559
XMLHttpRequest.send (async)
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_onIdle @ strophe.js:5455
_onIdle @ strophe.js:4467
(anonymous) @ strophe.js:5789
setTimeout (async)
_send @ strophe.js:5788
send @ strophe.js:3270
_attemptSASLAuth @ strophe.js:4018
authenticate @ strophe.js:4070
_connect_cb @ strophe.js:3945
_onRequestStateChange @ strophe.js:5559
XMLHttpRequest.send (async)
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_connect @ strophe.js:5170
connect @ strophe.js:3051
(anonymous) @ pruebas.js:71
(anonymous) @ jquery.min.js:27
(anonymous) @ jquery.min.js:27
each @ jquery.min.js:21
ready @ jquery.min.js:27
strophe.js:5662 XHR finished loading: POST "http://192.168.254.60:5280/bosh".
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_onIdle @ strophe.js:5455
_onIdle @ strophe.js:4467
(anonymous) @ strophe.js:3439
setTimeout (async)
_sendRestart @ strophe.js:3438
_sasl_success_cb @ strophe.js:4192
run @ strophe.js:2556
(anonymous) @ strophe.js:3822
forEachChild @ strophe.js:1522
_dataRecv @ strophe.js:3810
_onRequestStateChange @ strophe.js:5559
XMLHttpRequest.send (async)
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_onIdle @ strophe.js:5455
_onIdle @ strophe.js:4467
(anonymous) @ strophe.js:5789
setTimeout (async)
_send @ strophe.js:5788
send @ strophe.js:3270
_sasl_challenge_cb @ strophe.js:4088
run @ strophe.js:2556
(anonymous) @ strophe.js:3822
forEachChild @ strophe.js:1522
_dataRecv @ strophe.js:3810
_onRequestStateChange @ strophe.js:5559
XMLHttpRequest.send (async)
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_onIdle @ strophe.js:5455
_onIdle @ strophe.js:4467
(anonymous) @ strophe.js:5789
setTimeout (async)
_send @ strophe.js:5788
send @ strophe.js:3270
_attemptSASLAuth @ strophe.js:4018
authenticate @ strophe.js:4070
_connect_cb @ strophe.js:3945
_onRequestStateChange @ strophe.js:5559
XMLHttpRequest.send (async)
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_connect @ strophe.js:5170
connect @ strophe.js:3051
(anonymous) @ pruebas.js:71
(anonymous) @ jquery.min.js:27
(anonymous) @ jquery.min.js:27
each @ jquery.min.js:21
ready @ jquery.min.js:27
strophe.js:5662 XHR finished loading: POST "http://192.168.254.60:5280/bosh".
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_onIdle @ strophe.js:5455
_onIdle @ strophe.js:4467
(anonymous) @ strophe.js:5789
setTimeout (async)
_send @ strophe.js:5788
send @ strophe.js:3270
_sasl_auth1_cb @ strophe.js:4234
wrapper @ strophe.js:4181
(anonymous) @ strophe.js:4185
run @ strophe.js:2556
(anonymous) @ strophe.js:3822
forEachChild @ strophe.js:1522
_dataRecv @ strophe.js:3810
_onRequestStateChange @ strophe.js:5559
XMLHttpRequest.send (async)
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_onIdle @ strophe.js:5455
_onIdle @ strophe.js:4467
(anonymous) @ strophe.js:3439
setTimeout (async)
_sendRestart @ strophe.js:3438
_sasl_success_cb @ strophe.js:4192
run @ strophe.js:2556
(anonymous) @ strophe.js:3822
forEachChild @ strophe.js:1522
_dataRecv @ strophe.js:3810
_onRequestStateChange @ strophe.js:5559
XMLHttpRequest.send (async)
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_onIdle @ strophe.js:5455
_onIdle @ strophe.js:4467
(anonymous) @ strophe.js:5789
setTimeout (async)
_send @ strophe.js:5788
send @ strophe.js:3270
_sasl_challenge_cb @ strophe.js:4088
run @ strophe.js:2556
(anonymous) @ strophe.js:3822
forEachChild @ strophe.js:1522
_dataRecv @ strophe.js:3810
_onRequestStateChange @ strophe.js:5559
XMLHttpRequest.send (async)
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_onIdle @ strophe.js:5455
_onIdle @ strophe.js:4467
(anonymous) @ strophe.js:5789
setTimeout (async)
_send @ strophe.js:5788
send @ strophe.js:3270
_attemptSASLAuth @ strophe.js:4018
authenticate @ strophe.js:4070
_connect_cb @ strophe.js:3945
_onRequestStateChange @ strophe.js:5559
XMLHttpRequest.send (async)
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_connect @ strophe.js:5170
connect @ strophe.js:3051
(anonymous) @ pruebas.js:71
(anonymous) @ jquery.min.js:27
(anonymous) @ jquery.min.js:27
each @ jquery.min.js:21
ready @ jquery.min.js:27
strophe.js:5662 XHR finished loading: POST "http://192.168.254.60:5280/bosh".
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_onIdle @ strophe.js:5455
_onIdle @ strophe.js:4467
(anonymous) @ strophe.js:5789
setTimeout (async)
_send @ strophe.js:5788
send @ strophe.js:3270
_sasl_bind_cb @ strophe.js:4275
run @ strophe.js:2556
(anonymous) @ strophe.js:3822
forEachChild @ strophe.js:1522
_dataRecv @ strophe.js:3810
_onRequestStateChange @ strophe.js:5559
XMLHttpRequest.send (async)
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_onIdle @ strophe.js:5455
_onIdle @ strophe.js:4467
(anonymous) @ strophe.js:5789
setTimeout (async)
_send @ strophe.js:5788
send @ strophe.js:3270
_sasl_auth1_cb @ strophe.js:4234
wrapper @ strophe.js:4181
(anonymous) @ strophe.js:4185
run @ strophe.js:2556
(anonymous) @ strophe.js:3822
forEachChild @ strophe.js:1522
_dataRecv @ strophe.js:3810
_onRequestStateChange @ strophe.js:5559
XMLHttpRequest.send (async)
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_onIdle @ strophe.js:5455
_onIdle @ strophe.js:4467
(anonymous) @ strophe.js:3439
setTimeout (async)
_sendRestart @ strophe.js:3438
_sasl_success_cb @ strophe.js:4192
run @ strophe.js:2556
(anonymous) @ strophe.js:3822
forEachChild @ strophe.js:1522
_dataRecv @ strophe.js:3810
_onRequestStateChange @ strophe.js:5559
XMLHttpRequest.send (async)
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_onIdle @ strophe.js:5455
_onIdle @ strophe.js:4467
(anonymous) @ strophe.js:5789
setTimeout (async)
_send @ strophe.js:5788
send @ strophe.js:3270
_sasl_challenge_cb @ strophe.js:4088
run @ strophe.js:2556
(anonymous) @ strophe.js:3822
forEachChild @ strophe.js:1522
_dataRecv @ strophe.js:3810
_onRequestStateChange @ strophe.js:5559
XMLHttpRequest.send (async)
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_onIdle @ strophe.js:5455
_onIdle @ strophe.js:4467
(anonymous) @ strophe.js:5789
setTimeout (async)
_send @ strophe.js:5788
send @ strophe.js:3270
_attemptSASLAuth @ strophe.js:4018
authenticate @ strophe.js:4070
_connect_cb @ strophe.js:3945
_onRequestStateChange @ strophe.js:5559
XMLHttpRequest.send (async)
sendFunc @ strophe.js:5662
_processRequest @ strophe.js:5677
_throttledRequestHandler @ strophe.js:5823
_connect @ strophe.js:5170
connect @ strophe.js:3051
(anonymous) @ pruebas.js:71
(anonymous) @ jquery.min.js:27
(anonymous) @ jquery.min.js:27
each @ jquery.min.js:21
ready @ jquery.min.js:27
pruebas.js:11 Resp.C  <body rid='967555666' xmlns='http://jabber.org/protocol/httpbind' sid='4302eda0c641a82a25f44ce1b5adb9e912de49f5'><auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='SCRAM-SHA-1'>biwsbj11c2VyMSxyPWQ0MWQ4Y2Q5OGYwMGIyMDRlOTgwMDk5OGVjZjg0Mjdl</auth></body>
pruebas.js:11 Resp.S  <body xmlns='http://jabber.org/protocol/httpbind'><challenge xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>cj1kNDFkOGNkOThmMDBiMjA0ZTk4MDA5OThlY2Y4NDI3ZUhVdlhMa1RjTUppWUttQ0NMYXNocXc9PSxzPUxOTWpOVmRMLzlzU0FzK1Q2ekoxQ2c9PSxpPTQwOTY=</challenge></body>
pruebas.js:11 Resp.C  <body rid='967555667' xmlns='http://jabber.org/protocol/httpbind' sid='4302eda0c641a82a25f44ce1b5adb9e912de49f5'><response xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>Yz1iaXdzLHI9ZDQxZDhjZDk4ZjAwYjIwNGU5ODAwOTk4ZWNmODQyN2VIVXZYTGtUY01KaVlLbUNDTGFzaHF3PT0scD1MNjBTWkdaeldyeWRjYkJ2WjBnc0lrS2R3RFU9</response></body>
pruebas.js:11 Resp.S  <body xmlns='http://jabber.org/protocol/httpbind'><success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'>dj1XOTZ1RkhNZjBuNmw5andMZEkrQ245eGFycWs9</success></body>
pruebas.js:11 Resp.C  <body rid='967555668' xmlns='http://jabber.org/protocol/httpbind' sid='4302eda0c641a82a25f44ce1b5adb9e912de49f5' to='im.rtedesw29.com' xml:lang='en' xmpp:restart='true' xmlns:xmpp='urn:xmpp:xbosh'/>
pruebas.js:11 Resp.S  <body xmlns='http://jabber.org/protocol/httpbind' xmlns:stream='http://etherx.jabber.org/streams' xmlns:xmpp='urn:xmpp:xbosh' xmpp:version='1.0' authid='4690012006633422232'><stream:features><bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'/><session xmlns='urn:ietf:params:xml:ns:xmpp-session'><optional/></session><c xmlns='http://jabber.org/protocol/caps' ver='SJSmfSQYyDmvtW6FcwOWLg0jnv0=' node='http://www.process-one.net/en/ejabberd/' hash='sha-1'/><sm xmlns='urn:xmpp:sm:2'/><sm xmlns='urn:xmpp:sm:3'/><csi xmlns='urn:xmpp:csi:0'/></stream:features></body>
pruebas.js:11 Resp.C  <body rid='967555669' xmlns='http://jabber.org/protocol/httpbind' sid='4302eda0c641a82a25f44ce1b5adb9e912de49f5'><iq type='set' id='_bind_auth_2' xmlns='jabber:client'><bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'/></iq></body>
pruebas.js:11 Resp.S  <body xmlns='http://jabber.org/protocol/httpbind'><iq xmlns='jabber:client' type='result' id='_bind_auth_2'><bind xmlns='urn:ietf:params:xml:ns:xmpp-bind'><jid>user1@im.rtedesw29.com/176851147521220798123474</jid></bind></iq></body>
pruebas.js:11 Resp.C  <body rid='967555670' xmlns='http://jabber.org/protocol/httpbind' sid='4302eda0c641a82a25f44ce1b5adb9e912de49f5'><iq type='set' id='_session_auth_2' xmlns='jabber:client'><session xmlns='urn:ietf:params:xml:ns:xmpp-session'/></iq></body>
pruebas.js:11 Resp.S  <body xmlns='http://jabber.org/protocol/httpbind'><iq xmlns='jabber:client' xml:lang='es' to='user1@im.rtedesw29.com/176851147521220798123474' from='user1@im.rtedesw29.com' type='result' id='_session_auth_2'/></body>
pruebas.js:11 Conectado...
pruebas.js:11 Resp.C  <body rid='967555671' xmlns='http://jabber.org/protocol/httpbind' sid='4302eda0c641a82a25f44ce1b5adb9e912de49f5'/>
----------------- salir
Resp.S  <body xmlns='http://jabber.org/protocol/httpbind'/>
pruebas.js:11 Resp.C  <body rid='967555672' xmlns='http://jabber.org/protocol/httpbind' sid='4302eda0c641a82a25f44ce1b5adb9e912de49f5'/>
pruebas.js:11 Resp.C  <body rid='967555673' xmlns='http://jabber.org/protocol/httpbind' sid='4302eda0c641a82a25f44ce1b5adb9e912de49f5' type='terminate'><presence xmlns='jabber:client' type='unavailable'/></body>
pruebas.js:11 Resp.S  <body xmlns='http://jabber.org/protocol/httpbind' type='terminate'/>
pruebas.js:11 Resp.S  <body xmlns='http://jabber.org/protocol/httpbind' type='terminate' condition='other-request'/>
pruebas.js:11 Desconectado
---------------
INSERT INTO users (username, password)
VALUES ('user364','user221');
INSERT INTO users (username, password)
VALUES ('user343','user221');
INSERT INTO users (username, password)
VALUES ('user344','user221');
INSERT INTO users (username, password)
VALUES ('user345','user221');
INSERT INTO users (username, password)
VALUES ('user346','user221');
INSERT INTO users (username, password)
VALUES ('user348','user221');
INSERT INTO users (username, password)
VALUES ('user349','user221');
INSERT INTO users (username, password)
VALUES ('user350','user221');
INSERT INTO users (username, password)
VALUES ('user351','user221');
INSERT INTO users (username, password)
VALUES ('user352','user221');
INSERT INTO users (username, password)
VALUES ('user353','user221');
INSERT INTO users (username, password)
VALUES ('user354','user221');
INSERT INTO users (username, password)
VALUES ('user355','user221');
INSERT INTO users (username, password)
VALUES ('user356','user221');
INSERT INTO users (username, password)
VALUES ('user357','user221');
INSERT INTO users (username, password)
VALUES ('user358','user221');
INSERT INTO users (username, password)
VALUES ('user359','user221');
INSERT INTO users (username, password)
VALUES ('user360','user221');
INSERT INTO users (username, password)
VALUES ('user361','user221');
INSERT INTO users (username, password)
VALUES ('user362','user221');
INSERT INTO users (username, password)
VALUES ('user363','user221');
var BOSH_CONEXION = 'http://192.168.254.60:5280/bosh';

/*
Extructura de conexion para esperar respuesta del servido al cliente.
entrada stanz
*/
    var BOSH_CONEXION = 'http://192.168.254.60:5280/bosh';

    /*
    Extructura de conexion para esperar respuesta del servido al cliente.
    entrada stanz
    */
    var Iniciar = {
        user: 'user1@im.rtedesw29.com',
        pass: 'user1',
        conexion: null,
        conectado: false,
        mostrar_raw: true,
        mostrar_log: true,

        log: function(msg){
            if (Iniciar.mostrar_log &&  window.console) {
                console.log(msg);
            }
        },

        raw_entrada: function(data){
            if (Iniciar.mostrar_raw) {
                Iniciar.log('Resp.S  '+ data);
            }
        },

        raw_salida: function(data){
            if (Iniciar.mostrar_raw) {
                Iniciar.log('Resp.C  ' + data);
            }
        },

        on_presence(presence){
            var presence_type = $(presence).attr('type'); // unavailable, subscribed, etc...
            var from = $(presence).attr('from'); // the jabber_id of the contact
            if (presence_type != 'error'){
                if (presence_type === 'unavailable'){
                    // Mark contact as offline
                }else{
                    var show = $(presence).find("show").text(); // this is what gives away, dnd, etc.
                    if (show === 'chat' || show === ''){
                        // Mark contact as online
                    }else{
                        // etc...
                    }
                }
            }
        return true;
        }
    }
    /*
    *1. Primero iniciar conexion BOSH
    *2. Enviar un escuchador al servidor
    *3. Iniciar seccion jid
    */

    $(document).ready(function () {
        Iniciar.log('Iniciando conexion');
        // Espere 3 segundos y la página alertará
        /*
        https://www.w3schools.com/jsref/met_win_setinterval.asp
        https://www.w3schools.com/js/js_timing.asp
        /*/
        setInterval(function(){ alert("Hello"); }, 3000);

        /*Resp.C   XEP-0206: XMPP Over BOSH
        secuencias bidireccionales sobre HTTP sincrónico (BOSH) para transportar las stanzas XMPP.
        un enlace HTTP  mantener una conexión TCP de larga duración a un servidor XMPP.

        Wrapper Element / Elementos de envoltura
        <body   rid='1986147588'
                xmlns='http://jabber.org/protocol/httpbind'
                to='im.rtedesw29.com'
                xml:lang='en' wait='60'
                hold='1'
                content='text/xml; charset=utf-8'
                ver='1.6' xmpp:version='1.0'
                xmlns:xmpp='urn:xmpp:xbosh'
        />
        terminate remote-stream-error
        */
        var conn = new Strophe.Connection(BOSH_CONEXION);
        /*Resp.S 
        <body
            xmlns='http://jabber.org/protocol/httpbind'
            xmlns:xmpp='urn:xmpp:xbosh'
            xmlns:stream='http://etherx.jabber.org/streams'
            xmpp:version='1.0'
            authid='2417672867397470635'
            sid='080b4b1d636c7954da85586bd4becccbbfd42092'
            wait='60' ver='1.11' polling='2' inactivity='30' hold='1'
            xmpp:restartlogic='true' requests='2' secure='true' maxpause='120'
            from='im.rtedesw29.com'
        />

        Al recibir una solicitud de reinicio, el /administrador de conexión/ DEBE considerar la secuencia
        previa con el servidor XMPP para ser cerrada. DEBE iniciar una nueva transmisión
        enviando una etiqueta de apertura sobre la misma conexión TCP al servidor XMPP.
        Si el administrador de conexión recibe un elemento del servidor XMPP,
        DEBE reenviar ese elemento al cliente
        */
        Iniciar.conexion = conn;
        Iniciar.conexion.rawInput = Iniciar.raw_entrada;
        Iniciar.conexion.rawOutput = Iniciar.raw_salida;
        //problemas de firewall - esperar respusta del cliente envio de solicitud web.conf
        /*
        SENT:
        <body
            rid='3703502065'
            xmlns='http://jabber.org/protocol/httpbind'
            sid='da7d4170cb6d1497abc7162e82028850571fc46b'
        />
        */
        //Iniciar.conexion.addHandler(Iniciar.on_result, null, "message", null, null);
        //escuchador server
       
       
        //Iniciar.conexion.send($pres().tree());
        //-ERROR
        //iq = $iq({type: 'get'}).c('query', {xmlns: 'jabber:iq:roster'});
        //Iniciar.conexion.addHandler(iq, Iniciar.on_presence);
        //Iniciar.conexion.sendIQ(iq, null, "message", null, null);
        //connection.addHandler(Control.on_result, null, "message", null, null);
        //connection.addHandler(Control.on_result, null, "message", null, null);
        //seccion jid
       // conn.subscribe('key', [], function(event){
         //                           console.log($(event).find('entry').text());
         //                       });
        ///-ERROR
       
        Iniciar.conexion.connect(
                        Iniciar.user,
                        Iniciar.pass,
                        function(status){
                            if(status == Strophe.Status.CONNECTING){
                                Iniciar.log('conectado...');
                            } else if( status == Strophe.Status.CONNFAIL){
                                Iniciar.log('Conexion Fallida!');
                            }else if(status == Strophe.DISCONNECTING){
                                Iniciar.log("Desconectando..");
                            }else if(status == Strophe.Status.DISCONNECTED){
                                Iniciar.log('Desconectado');
                            }else if(status == Strophe.Status.CONNECTED){
                                $('#cuadro').append(' 2 de 3 conectado ');
                                $(document).trigger('conectando');
                            }else{
                                //
                            }
                        }
        );
        $('#cuadro').append("1 de 3 conectado");
        //$(document).trigger('conectar');

        $('#salir').click(function(){
           
            Iniciar.conexion.disconnect();
            $('#cuadro').append(' user1 ha salido');
            Iniciar.conexion = null;
            conn.disconnect();
        });

    });
       



    $(document).bind('conectar', function () {
        //conexion
        $('#salir').click(function(){
            $('#cuadro').append(' user1 ha salido');
            Iniciar.conexion = null;
            conn.disconnect();
        });
       
    });

    $(document).bind('conectando', function () {
        Iniciar.log('Conectado...');
        $('#cuadro').append(' 3 de 3 conectado ');
        $('#cuadro').append('El usuario esta conectado');
        setInterval(function(){ alert("Hello"); }, 3000); 
       
    });


    function callback(iq){
        $(iq).find('item').each(function(){
            var jid = $(this).attr('jid'); // contacto ejabberd
        });
        Iniciar.conexion.addHandler(Iniciar.on_presence, null, "presence");
        Iniciar.conexion.send($pres());
        $('#cuadro').append(' enviando presencia ');
    }

----------------------------------------

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<h1>PRUEBAS </h1>

<h1>Latest content:</h1>
    <div id="cuadro">MENSAJE pruebas </div>
    <BR>
<button id="salir">salir </button>

    <script type="text/javascript" src="../scripts/jquery.min.js"></script>
    <script type="text/javascript" src="../scripts/strophe.js"></script>
    <script type="text/javascript" src="../scripts/strophe.pubsub.min.js"></script>
    <script type="text/javascript" src="pruebas.js"></script>
 
</body>
</html>
------------------------------
var Config = {
  BOSH_SERVICE: 'http://192.168.254.60:5280/bosh',
  XMPP_SERVER:  'im.rtedesw29.com',
  PUBSUB_NODE:  'pubsub.im.rtedesw29.com'
}
-----------------------------

Comentarios

Entradas más populares de este blog

JEE Java Enterprise Editions

React js

Django