SlideShare una empresa de Scribd logo
1 de 22
Descargar para leer sin conexión
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

                                        ¿Qué es Kaazing Gateway?

    Es un open source HTML 5 WebSocket Server.
●


    Proporciona comunicación full-duplex entre el
●


    navegador y cualquier servicio back-end basado en
    TCP.
    Si el navegador no soporta WebSocket, la conexión
●


    entre los navegadores y Kaazing Portal Server es
    emulado con dos conexiones HTTP.
    Soporta varios protocolos, entre ellos STOMP, que
●


    permite la comunicación con populares
    implementaciones de JMS como Apache ActiveMQ.
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

                                        ¿Qué es Apache ActiveMQ?

    Es un Message Broker open-source.
●


    Soporte de varios lenguajes de cliente (Java, C, C++,
●


    C#, Ruby, Perl, Python, PHP)
    Soporte de varios protocolos (OpenWire, REST, Stomp,
●


    WS Notification, XMPP, AMQP)
    Total soporte de JMS 1.1 y J2EE 1.4
●
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

                                                             ¿Qué es JMS?

    JMS es la solución creada por SUN para el uso de colas
●


    de mensajes.
    Dos modelos de la API JMS:
●


        Modelo Punto a Punto (point to point): Hay dos clientes, uno
    –
        que envía el mensaje y otro que lo recibe. El mensaje siempre
        llega. Si el receptor no esta disponible para recibir el mensaje,
        el mensaje es enviado y se guarda en cola. Cuando entre el
        receptor, recibe el mensaje.
        Modelo Publicador/Suscriptor (Publish/Subscribe): Hay varios
    –
        clientes. Los que publican temas o eventos y los que ven estos
        tópicos.
    Son clientes los que envían como los que reciben.
●
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

                                                    ¿Qué es STOMP?

    Streaming Text Orientated Messaging Protocol
●


    Proporciona un formato para que un cliente Stomp
●


    pueda comunicarse con cualquier Stomp Message
    Broker (Apache ActiveMQ).
    Clientes Stomp (C, C++, C# and .Net, Delphi, Flash,
●


    Java o Gozirra, Perl, PHP, Pike, Python, Ruby and Rails,
    Smalltalk)
    Stomp Brokers (Apache ActiveMQ, StompConnect,
●


    StompServer, Gozirra)
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

                                           Diagrama
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

                                                              Diagrama

    Servidor Web Apache sirve una página HTML (con PHP
●


    también puede ser) al cliente.
    El cliente se conecta mediante la librería de Stomp al
●


    servidor Kaazing Gateway, y se subscribe a un canal (o
    varios)
    El servidor Kaazing Gateway crea un proxy TCP con el
●


    servidor ActiveMQ.
    El cliente envía datos a un canal (mediante Javascript) a
●


    Kaazing. Kaazing lo reenvía a ActiveMQ. ActiveMQ
    envía esos datos a todos los clientes conectados al
    canal, incluido Kaazing. Kaazing lo manda a todos los
    conectados, incluido el cliente que lo ha mandado.
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

                                                              Diagrama

    En el servidor web Apache, hay un script en PHP
●


    corriendo continuamente.
    Está conectado al servidor ActiveMQ. Manda datos al
●


    servidor y a un canal específico. No necesita de
    Kaazing para mandar datos vía Stomp.
    ActiveMQ recoge los datos y los manda a todos los
●


    clientes conectados a ese canal, incluido Kaazing.
    Kaazing recoge los datos y los reenvía a todos los
●


    clientes conectados a ese canal mediante la librería de
    JavaScript.
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

                                    Instalación de Kaazing y ActiveMQ

    Descargamos las últimas versiones de:
●


         http://www.kaazing.org/confluence/display/KAAZING/Download
     ●



         http://activemq.apache.org/download.html
     ●



    Descomprimimos los archivos. En Apache ActiveMQ no
●


    cambiamos nada, lo dejamos tal como viene.
    Editar el fichero conf/gateway-config.xml de Kaazing.
●


    Entre las etiquetas <gateway-config> y </gateway-
●


    config> solo nos interesa un proxy a una dirección tcp
    para conectarnos con el Apache ActiveMQ usando el
    protocolo STOMP.
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

                                Configuración de gateway-config.xml

    Todo lo que esté entre <gateway-config> lo
●


    comentamos y ponemos lo siguiente.
    <!­­ Proxy to STOMP server ­­>
    <service>
    <!­­ ws:// scheme refers to WebSocket ­­>
    <!­­ wss:// scheme refers to WebSocket (secure) ­­>
    <accept>ws://websocket.irontec.com:8001/activemq</accept>
    <accept>wss://websocket.irontec.com:9001/activemq</accept>

    <type>proxy</type>
    <properties>
    <connect>tcp://websocket.irontec.com:61613</connect>
    </properties>

    <cross­site­constraint>
    <allow­origin>http://websocket.irontec.com:80</allow­origin>
    <allow­origin>*</allow­origin>
    </cross­site­constraint>
    </service>
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

                                   Configuración de gateway-config.xml

    <accept>
●


         ponemos las conexiones que vamos a aceptar para este servicio.
     ●


         Son de tipo ws (web socket) y wss (web socket secure). Cuando un
         cliente se quiera conectar mediante JavaScript tendrá que hacerlo
         a esta dirección.
    <connect>
●


         ponemos la dirección del servidor Apache ActiveMQ, y el puerto
     ●


         donde va a escuchar el protocolo STOMP, por defecto en el
         61613.
    <allow-origin>
●


         hay que indicar desde donde permitimos acceder al servicio. Si
     ●


         ponemos *, aceptamos las peticiones desde cualquier sitio. Si
         queremos restringirlo solo al nuestro, ponemos su dirección. Se
         pueden poner varios.
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

                                                  Activar los servicios

    Entramos en la carpeta bin dentro del Apache
●


    ActiveMQ y ejecutamos ./activemq.
    Entramos en la carpeta bin dentro del Kaazing Gateway
●


    y ejecutamos ./gateway-start
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

                                                    Librerías JS y PHP

    Una vez que ya tenemos los dos servicios corriendo,
●


    nos queda programar la parte del cliente. Vamos a usar
    unas librerías JS que vienen con el Kaazing, que se
    encargarán de emular los WebSocket, para poder
    conectarnos vía JavaScript al servidor. Dentro de
    web/html5 cogemos la libreria ByteSocket.js y de
    web/protocol cogemos StompClient.js. Con estas dos,
    ya nos vale para conectarnos con JavaScript.
    También vamos a necesitar una librería de PHP, que
●


    vamos a usar para mandar datos. Para bajarla, vamos a
    http://code.google.com/p/stompcli/downloads/list.
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

                                                             tutorial.php

    En primer lugar hacemos el script PHP. Vamos a hacer
●


    que el script envíe cada cierto tiempo (entre 1 y 5
    segundos, de forma aleatoria) un número entre 1 y
    100.
    Creamos un objeto Stomp conectándonos a
●


    tcp://websocket.irontec.com:61613 (que es donde
    Apache ActiveMQ va a escuchar el protocolo Stomp)
    Enviamos datos a un canal de esa dirección tcp (vamos
●


    a usar el canal /topic/test)
        $con->send(quot;/topic/numbersquot;, $numero);
    –
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

                                                        tutorial.php

<?php
//Necesitamos la librería Stomp.php que hemos bajado 
require_once(quot;./phpstomp/Stomp.phpquot;);
//Creamos un objeto Stomp, conectandonos al servidor que va a 
escuchar el Stomp
$con = new Stomp('tcp://websocket.irontec.com:61613');
$con­>connect(); //Hacemos la conexión
//Un bucle infinito si queremos que esté siempre enviando
while (true) {
        $time = rand(1,5); //Tiempo aleatorio de espera
        $numero = rand(1,100); //Número a enviar
        //Enviamos el numero al canal quot;numbersquot;
        $con­>send(quot;/topic/numbersquot;, $numero);
        sleep($time); //Hacemos una pausa
}
$con­>disconnect(); //Desconectamos
?>
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

                                                            tutorial.html

    Vamos con el html. Ponemos un input para hacer un
●


    mini chat, a la vez que se reciben los números del php
    anterior. En la página html solo vamos a tener incluidos
    los archivos js que nos hacen falta (ByteSocket y
    StompClient para los websockets, JQuery, y tutorial.js
    donde meteremos nuestro código para recibir y mandar
    datos a través de Stomp.
    <script src=quot;ByteSocket.jsquot;></script>
    <script src=quot;StompClient.jsquot;></script>
    <script src=quot;jquery­1.3.2.min.jsquot;></script>
    <script src=quot;tutorial.jsquot;></script>
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

                                                            tutorial.html

    Esto es el código que va dentro del <body>
●

    <div style=quot;margin: 10px; width:300px; float: left; border: 
    solid #000 1px;quot;>
    <input type=quot;textquot; size=quot;20quot; name=quot;textoquot; id=quot;textoquot; />
    &nbsp;<input type=quot;buttonquot; name=quot;botonquot; id=quot;botonquot; 
    value=quot;Enviarquot; />
    <div id=quot;divtextoquot;>
    </div>
    </div>
    <div id=quot;divnumerosquot; style=quot;margin: 10px; float: left; 
    width:300px; border: solid #000 1px;quot;>
    </div>
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

                                                           tutorial.js

$(document).ready(function(){
var stomp; //Variable donde vamos a guardar el objeto Stomp
stomp = new StompClient(); //Creamos el objeto Stomp
stomp.onopen = function(headers) {
        //Cuando se conecte al servidor Kaazing, nos 
        subscribimos al canal /topic/chat y /topic/numbers, 
        para recibir los datos que se envíen a esos canales
        stomp.subscribe(quot;/topic/numbersquot;);
        stomp.subscribe(quot;/topic/chatquot;);
}
//Cuando se reciban datos de la conexión
stomp.onmessage = function(headers, body) {
        //En body se guardan los datos que se reciben
        //En headers[“destination”] indica a que canal se han 
        mandado los datos
        if (headers[“destination”] == quot;/topic/numbersquot;) {
        $(quot;#divnumerosquot;).append(quot;<p>El número es: quot;+body);
        } else if (headers[“destination”] == quot;/topic/chatquot;) {
        $(quot;#divtextoquot;).append(body);
        }
}
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

                                                           tutorial.js

stomp.onclosed = function(headers) {
        //Si se desconecta, podemos meter código para 
        reconectar de nuevo o sacar un alert
}
//Hacemos la conexión al servidor Kaazing. Username y 
password lo dejamos vacio.
stomp.connect(quot;ws://websocket.irontec.com:8001/activemqquot;, 
{username:quot;quot;, password:quot;quot;});

$(quot;#botonquot;).bind('click',function(){
if ($(quot;#textoquot;).val() != quot;quot;) {
        //Al dar a enviar, mandamos al canal /topic/chat lo 
        escrito en el input
        stomp.send($(quot;#textoquot;).val(),quot;/topic/chatquot;);
        $(quot;#textoquot;).val(quot;quot;);
}
}
});
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

                                                Ejecutando el tutorial

    Ya tenemos los 3 archivos. Abrimos tutorial.html desde
●


    el navegador http://websocket.irontec.com/tutorial.html
    desde 2 ordenadores (o 2 navegadores) para probar el
    mini chat.
    Si escribimos en el input y damos a enviar, se ira
●


    añadiendo el texto debajo del input, en todos los
    navegadores donde tenga abierta la página.
    Para mandar los datos desde tutorial.php lo ejecutamos
●


    desde consola con “php tutorial.php” e irán
    apareciendo los números a la derecha del mini chat.
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

                                  Licencia Copyleft




      Copyright
Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp

                                                      Licencia Copyleft

    Este documento está protegido bajo la licencia
●


    Reconocimiento-SinObraDerivada 2.1 España de Creative
    Common (http://creativecommons.org/licenses/by-
    nd/2.1/es/)
    David Lores <david@irontec.com>
    Copyright © 2009 Irontec <contacto@irontec.com>

    Se permite la copia, modificación, distribución, uso
    comercial y realización de la obra, siempre y cuando se
    reconozca la autoría de la misma, a no sea ser que se
    obtenga permiso expreso del autor. El autor no permite
    distribuir obras derivadas a esta.

    Esta nota no es la licencia completa de la obra, sino
    una traducción de la nota orientativa de la licencia
    original completa (jurídicamente válida).

Más contenido relacionado

Destacado

Zookeeper: Wait-free Coordination for Internet-scale Systems
Zookeeper: Wait-free Coordination for Internet-scale SystemsZookeeper: Wait-free Coordination for Internet-scale Systems
Zookeeper: Wait-free Coordination for Internet-scale SystemsLeandro Lera Romero
 
2017-01-26 Internet Arriskuak: Andramendi Ikastola, Gurasoen saioa
2017-01-26 Internet Arriskuak: Andramendi Ikastola, Gurasoen saioa2017-01-26 Internet Arriskuak: Andramendi Ikastola, Gurasoen saioa
2017-01-26 Internet Arriskuak: Andramendi Ikastola, Gurasoen saioaUrko Zurutuza
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!Paradigma Digital
 
Apache Zookeeper Explained: Tutorial, Use Cases and Zookeeper Java API Examples
Apache Zookeeper Explained: Tutorial, Use Cases and Zookeeper Java API ExamplesApache Zookeeper Explained: Tutorial, Use Cases and Zookeeper Java API Examples
Apache Zookeeper Explained: Tutorial, Use Cases and Zookeeper Java API ExamplesBinu George
 
Hadoop: MapReduce para procesar grandes cantidades de datos
Hadoop: MapReduce para procesar grandes cantidades de datosHadoop: MapReduce para procesar grandes cantidades de datos
Hadoop: MapReduce para procesar grandes cantidades de datosRaul Ochoa
 
MySQL - High Availability - Load Balacing - Cluster
MySQL - High Availability - Load Balacing - ClusterMySQL - High Availability - Load Balacing - Cluster
MySQL - High Availability - Load Balacing - ClusterMiguel Angel Nieto
 
Introduction to ZooKeeper - TriHUG May 22, 2012
Introduction to ZooKeeper - TriHUG May 22, 2012Introduction to ZooKeeper - TriHUG May 22, 2012
Introduction to ZooKeeper - TriHUG May 22, 2012mumrah
 
Distributed Applications with Apache Zookeeper
Distributed Applications with Apache ZookeeperDistributed Applications with Apache Zookeeper
Distributed Applications with Apache ZookeeperAlex Ehrnschwender
 
So we're running Apache ZooKeeper. Now What? By Camille Fournier
So we're running Apache ZooKeeper. Now What? By Camille Fournier So we're running Apache ZooKeeper. Now What? By Camille Fournier
So we're running Apache ZooKeeper. Now What? By Camille Fournier Hakka Labs
 

Destacado (20)

Zookeeper: Wait-free Coordination for Internet-scale Systems
Zookeeper: Wait-free Coordination for Internet-scale SystemsZookeeper: Wait-free Coordination for Internet-scale Systems
Zookeeper: Wait-free Coordination for Internet-scale Systems
 
2017-01-26 Internet Arriskuak: Andramendi Ikastola, Gurasoen saioa
2017-01-26 Internet Arriskuak: Andramendi Ikastola, Gurasoen saioa2017-01-26 Internet Arriskuak: Andramendi Ikastola, Gurasoen saioa
2017-01-26 Internet Arriskuak: Andramendi Ikastola, Gurasoen saioa
 
Monitorización
MonitorizaciónMonitorización
Monitorización
 
Conferencia 2: El esquema
Conferencia 2: El esquemaConferencia 2: El esquema
Conferencia 2: El esquema
 
Replicación Mysql
Replicación MysqlReplicación Mysql
Replicación Mysql
 
Mysql Administracion
Mysql AdministracionMysql Administracion
Mysql Administracion
 
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
¿Cómo se despliega y autoescala Couchbase en Cloud? ¡Aprende de manera práctica!
 
Apache Zookeeper Explained: Tutorial, Use Cases and Zookeeper Java API Examples
Apache Zookeeper Explained: Tutorial, Use Cases and Zookeeper Java API ExamplesApache Zookeeper Explained: Tutorial, Use Cases and Zookeeper Java API Examples
Apache Zookeeper Explained: Tutorial, Use Cases and Zookeeper Java API Examples
 
Hadoop: MapReduce para procesar grandes cantidades de datos
Hadoop: MapReduce para procesar grandes cantidades de datosHadoop: MapReduce para procesar grandes cantidades de datos
Hadoop: MapReduce para procesar grandes cantidades de datos
 
MySQL - High Availability - Load Balacing - Cluster
MySQL - High Availability - Load Balacing - ClusterMySQL - High Availability - Load Balacing - Cluster
MySQL - High Availability - Load Balacing - Cluster
 
Introducción a Solr
Introducción a SolrIntroducción a Solr
Introducción a Solr
 
MySQL 5.6 GTID in a nutshell
MySQL 5.6 GTID in a nutshellMySQL 5.6 GTID in a nutshell
MySQL 5.6 GTID in a nutshell
 
Seminario Apache Solr
Seminario Apache SolrSeminario Apache Solr
Seminario Apache Solr
 
Conferencia 5: Extendiendo Solr
Conferencia 5: Extendiendo SolrConferencia 5: Extendiendo Solr
Conferencia 5: Extendiendo Solr
 
Conferencia 3: solrconfig.xml
Conferencia 3: solrconfig.xmlConferencia 3: solrconfig.xml
Conferencia 3: solrconfig.xml
 
Conferencia 4: Queries
Conferencia 4: QueriesConferencia 4: Queries
Conferencia 4: Queries
 
Introduction to ZooKeeper - TriHUG May 22, 2012
Introduction to ZooKeeper - TriHUG May 22, 2012Introduction to ZooKeeper - TriHUG May 22, 2012
Introduction to ZooKeeper - TriHUG May 22, 2012
 
Apache avanzado
Apache avanzadoApache avanzado
Apache avanzado
 
Distributed Applications with Apache Zookeeper
Distributed Applications with Apache ZookeeperDistributed Applications with Apache Zookeeper
Distributed Applications with Apache Zookeeper
 
So we're running Apache ZooKeeper. Now What? By Camille Fournier
So we're running Apache ZooKeeper. Now What? By Camille Fournier So we're running Apache ZooKeeper. Now What? By Camille Fournier
So we're running Apache ZooKeeper. Now What? By Camille Fournier
 

Similar a Kaazing Gateway + Apache Active MQ + Javascript + Stomp

Similar a Kaazing Gateway + Apache Active MQ + Javascript + Stomp (20)

Programación web con JSP
Programación web con JSPProgramación web con JSP
Programación web con JSP
 
introduccion a Ajax
introduccion a Ajaxintroduccion a Ajax
introduccion a Ajax
 
AJAX EN CURSO PHP
AJAX EN CURSO PHPAJAX EN CURSO PHP
AJAX EN CURSO PHP
 
Curso de php
Curso de phpCurso de php
Curso de php
 
Servicios web Extendido_error perl
Servicios web Extendido_error perlServicios web Extendido_error perl
Servicios web Extendido_error perl
 
Real-time web
Real-time webReal-time web
Real-time web
 
Airbase y KARMetasploit
Airbase y KARMetasploitAirbase y KARMetasploit
Airbase y KARMetasploit
 
Servidor web
Servidor webServidor web
Servidor web
 
Apache ha muerto, Viva Lighttpd
Apache ha muerto, Viva LighttpdApache ha muerto, Viva Lighttpd
Apache ha muerto, Viva Lighttpd
 
Apache
ApacheApache
Apache
 
2. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-20062. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-2006
 
JSP
JSPJSP
JSP
 
Servlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y TomcatServlet Hola Mundo con Eclipse y Tomcat
Servlet Hola Mundo con Eclipse y Tomcat
 
Servicios web java, php, perl, google
Servicios web java, php, perl, googleServicios web java, php, perl, google
Servicios web java, php, perl, google
 
Js
JsJs
Js
 
Sockets tcp
Sockets tcpSockets tcp
Sockets tcp
 
Generación de web sites dinámicos usando php
Generación de web sites dinámicos usando phpGeneración de web sites dinámicos usando php
Generación de web sites dinámicos usando php
 
Generación de web sites dinámicos usando php
Generación de web sites dinámicos usando phpGeneración de web sites dinámicos usando php
Generación de web sites dinámicos usando php
 
Semana 1 tecnologias web
Semana 1   tecnologias webSemana 1   tecnologias web
Semana 1 tecnologias web
 
Scripting para Pentesters v1.0
Scripting para Pentesters v1.0Scripting para Pentesters v1.0
Scripting para Pentesters v1.0
 

Más de Irontec

Gestion de proyectos con GitLab en tiempos de teletrabajo
Gestion de proyectos con GitLab en tiempos de teletrabajoGestion de proyectos con GitLab en tiempos de teletrabajo
Gestion de proyectos con GitLab en tiempos de teletrabajoIrontec
 
Sobre cómo gestionamos centenares de despliegues de VoIP
Sobre cómo gestionamos centenares de despliegues de VoIPSobre cómo gestionamos centenares de despliegues de VoIP
Sobre cómo gestionamos centenares de despliegues de VoIPIrontec
 
Presente y futuro del nuevo IVOZ Provider
Presente y futuro del nuevo IVOZ ProviderPresente y futuro del nuevo IVOZ Provider
Presente y futuro del nuevo IVOZ ProviderIrontec
 
Automated Testing para aplicaciones VoIP, WebRTC
Automated Testing para aplicaciones VoIP, WebRTCAutomated Testing para aplicaciones VoIP, WebRTC
Automated Testing para aplicaciones VoIP, WebRTCIrontec
 
Asterisk: Liberando y generando modelos de negocio en gran cuenta y operador ...
Asterisk: Liberando y generando modelos de negocio en gran cuenta y operador ...Asterisk: Liberando y generando modelos de negocio en gran cuenta y operador ...
Asterisk: Liberando y generando modelos de negocio en gran cuenta y operador ...Irontec
 
LA REVOLUCIÓN DEL CLOUD COMPUTING: NUEVA ERA DE DESARROLLO - OpenExpo17
LA REVOLUCIÓN DEL CLOUD COMPUTING: NUEVA ERA DE DESARROLLO - OpenExpo17LA REVOLUCIÓN DEL CLOUD COMPUTING: NUEVA ERA DE DESARROLLO - OpenExpo17
LA REVOLUCIÓN DEL CLOUD COMPUTING: NUEVA ERA DE DESARROLLO - OpenExpo17Irontec
 
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...Irontec
 
Escalabilidad “horizontal” en soluciones VoIP basadas en Asterisk / Kamailio
Escalabilidad “horizontal” en soluciones VoIP basadas en Asterisk / KamailioEscalabilidad “horizontal” en soluciones VoIP basadas en Asterisk / Kamailio
Escalabilidad “horizontal” en soluciones VoIP basadas en Asterisk / KamailioIrontec
 
VoIP2DAY 2015 - Workshop comercial ivoz provider
VoIP2DAY 2015 - Workshop comercial ivoz providerVoIP2DAY 2015 - Workshop comercial ivoz provider
VoIP2DAY 2015 - Workshop comercial ivoz providerIrontec
 
Irontec - comunicaciones unificadas en educación - biopen eduka - software li...
Irontec - comunicaciones unificadas en educación - biopen eduka - software li...Irontec - comunicaciones unificadas en educación - biopen eduka - software li...
Irontec - comunicaciones unificadas en educación - biopen eduka - software li...Irontec
 
Comparativa Firewall: IPCop vs. pfSense
Comparativa Firewall: IPCop vs. pfSenseComparativa Firewall: IPCop vs. pfSense
Comparativa Firewall: IPCop vs. pfSenseIrontec
 
Introducción a varnish cache (@irontec)
Introducción a varnish cache (@irontec)Introducción a varnish cache (@irontec)
Introducción a varnish cache (@irontec)Irontec
 
Curso de introducción a Sphinx | Irontec
Curso de introducción a Sphinx | IrontecCurso de introducción a Sphinx | Irontec
Curso de introducción a Sphinx | IrontecIrontec
 
Curso de VoIP / Parte 01: VoIP y Asterisk
Curso de VoIP / Parte 01: VoIP y AsteriskCurso de VoIP / Parte 01: VoIP y Asterisk
Curso de VoIP / Parte 01: VoIP y AsteriskIrontec
 
Curso de VoIP / Parte 03: Dialplan
Curso de VoIP / Parte 03: DialplanCurso de VoIP / Parte 03: Dialplan
Curso de VoIP / Parte 03: DialplanIrontec
 
Curso de VoIP / Parte 02: SIP
Curso de VoIP / Parte 02: SIPCurso de VoIP / Parte 02: SIP
Curso de VoIP / Parte 02: SIPIrontec
 
Curso de VoIP / Parte 04: Conceptos avanzados
Curso de VoIP / Parte 04: Conceptos avanzadosCurso de VoIP / Parte 04: Conceptos avanzados
Curso de VoIP / Parte 04: Conceptos avanzadosIrontec
 
Euskera zabaltzeko gure app berriak | Nuestras apps para difundir el euskera
Euskera zabaltzeko gure app berriak | Nuestras apps para difundir el euskeraEuskera zabaltzeko gure app berriak | Nuestras apps para difundir el euskera
Euskera zabaltzeko gure app berriak | Nuestras apps para difundir el euskeraIrontec
 
Virtualizacion KVM + libvirt + HREL6
Virtualizacion KVM + libvirt + HREL6Virtualizacion KVM + libvirt + HREL6
Virtualizacion KVM + libvirt + HREL6Irontec
 
Irontec - Presentación de servicios de telefonía IP
Irontec - Presentación de servicios de telefonía IPIrontec - Presentación de servicios de telefonía IP
Irontec - Presentación de servicios de telefonía IPIrontec
 

Más de Irontec (20)

Gestion de proyectos con GitLab en tiempos de teletrabajo
Gestion de proyectos con GitLab en tiempos de teletrabajoGestion de proyectos con GitLab en tiempos de teletrabajo
Gestion de proyectos con GitLab en tiempos de teletrabajo
 
Sobre cómo gestionamos centenares de despliegues de VoIP
Sobre cómo gestionamos centenares de despliegues de VoIPSobre cómo gestionamos centenares de despliegues de VoIP
Sobre cómo gestionamos centenares de despliegues de VoIP
 
Presente y futuro del nuevo IVOZ Provider
Presente y futuro del nuevo IVOZ ProviderPresente y futuro del nuevo IVOZ Provider
Presente y futuro del nuevo IVOZ Provider
 
Automated Testing para aplicaciones VoIP, WebRTC
Automated Testing para aplicaciones VoIP, WebRTCAutomated Testing para aplicaciones VoIP, WebRTC
Automated Testing para aplicaciones VoIP, WebRTC
 
Asterisk: Liberando y generando modelos de negocio en gran cuenta y operador ...
Asterisk: Liberando y generando modelos de negocio en gran cuenta y operador ...Asterisk: Liberando y generando modelos de negocio en gran cuenta y operador ...
Asterisk: Liberando y generando modelos de negocio en gran cuenta y operador ...
 
LA REVOLUCIÓN DEL CLOUD COMPUTING: NUEVA ERA DE DESARROLLO - OpenExpo17
LA REVOLUCIÓN DEL CLOUD COMPUTING: NUEVA ERA DE DESARROLLO - OpenExpo17LA REVOLUCIÓN DEL CLOUD COMPUTING: NUEVA ERA DE DESARROLLO - OpenExpo17
LA REVOLUCIÓN DEL CLOUD COMPUTING: NUEVA ERA DE DESARROLLO - OpenExpo17
 
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
IVOZ Provider Open Source - La solución VoIP opensource para operadores e int...
 
Escalabilidad “horizontal” en soluciones VoIP basadas en Asterisk / Kamailio
Escalabilidad “horizontal” en soluciones VoIP basadas en Asterisk / KamailioEscalabilidad “horizontal” en soluciones VoIP basadas en Asterisk / Kamailio
Escalabilidad “horizontal” en soluciones VoIP basadas en Asterisk / Kamailio
 
VoIP2DAY 2015 - Workshop comercial ivoz provider
VoIP2DAY 2015 - Workshop comercial ivoz providerVoIP2DAY 2015 - Workshop comercial ivoz provider
VoIP2DAY 2015 - Workshop comercial ivoz provider
 
Irontec - comunicaciones unificadas en educación - biopen eduka - software li...
Irontec - comunicaciones unificadas en educación - biopen eduka - software li...Irontec - comunicaciones unificadas en educación - biopen eduka - software li...
Irontec - comunicaciones unificadas en educación - biopen eduka - software li...
 
Comparativa Firewall: IPCop vs. pfSense
Comparativa Firewall: IPCop vs. pfSenseComparativa Firewall: IPCop vs. pfSense
Comparativa Firewall: IPCop vs. pfSense
 
Introducción a varnish cache (@irontec)
Introducción a varnish cache (@irontec)Introducción a varnish cache (@irontec)
Introducción a varnish cache (@irontec)
 
Curso de introducción a Sphinx | Irontec
Curso de introducción a Sphinx | IrontecCurso de introducción a Sphinx | Irontec
Curso de introducción a Sphinx | Irontec
 
Curso de VoIP / Parte 01: VoIP y Asterisk
Curso de VoIP / Parte 01: VoIP y AsteriskCurso de VoIP / Parte 01: VoIP y Asterisk
Curso de VoIP / Parte 01: VoIP y Asterisk
 
Curso de VoIP / Parte 03: Dialplan
Curso de VoIP / Parte 03: DialplanCurso de VoIP / Parte 03: Dialplan
Curso de VoIP / Parte 03: Dialplan
 
Curso de VoIP / Parte 02: SIP
Curso de VoIP / Parte 02: SIPCurso de VoIP / Parte 02: SIP
Curso de VoIP / Parte 02: SIP
 
Curso de VoIP / Parte 04: Conceptos avanzados
Curso de VoIP / Parte 04: Conceptos avanzadosCurso de VoIP / Parte 04: Conceptos avanzados
Curso de VoIP / Parte 04: Conceptos avanzados
 
Euskera zabaltzeko gure app berriak | Nuestras apps para difundir el euskera
Euskera zabaltzeko gure app berriak | Nuestras apps para difundir el euskeraEuskera zabaltzeko gure app berriak | Nuestras apps para difundir el euskera
Euskera zabaltzeko gure app berriak | Nuestras apps para difundir el euskera
 
Virtualizacion KVM + libvirt + HREL6
Virtualizacion KVM + libvirt + HREL6Virtualizacion KVM + libvirt + HREL6
Virtualizacion KVM + libvirt + HREL6
 
Irontec - Presentación de servicios de telefonía IP
Irontec - Presentación de servicios de telefonía IPIrontec - Presentación de servicios de telefonía IP
Irontec - Presentación de servicios de telefonía IP
 

Último

Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 

Último (15)

Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 

Kaazing Gateway + Apache Active MQ + Javascript + Stomp

  • 1. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp
  • 2. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp ¿Qué es Kaazing Gateway? Es un open source HTML 5 WebSocket Server. ● Proporciona comunicación full-duplex entre el ● navegador y cualquier servicio back-end basado en TCP. Si el navegador no soporta WebSocket, la conexión ● entre los navegadores y Kaazing Portal Server es emulado con dos conexiones HTTP. Soporta varios protocolos, entre ellos STOMP, que ● permite la comunicación con populares implementaciones de JMS como Apache ActiveMQ.
  • 3. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp ¿Qué es Apache ActiveMQ? Es un Message Broker open-source. ● Soporte de varios lenguajes de cliente (Java, C, C++, ● C#, Ruby, Perl, Python, PHP) Soporte de varios protocolos (OpenWire, REST, Stomp, ● WS Notification, XMPP, AMQP) Total soporte de JMS 1.1 y J2EE 1.4 ●
  • 4. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp ¿Qué es JMS? JMS es la solución creada por SUN para el uso de colas ● de mensajes. Dos modelos de la API JMS: ● Modelo Punto a Punto (point to point): Hay dos clientes, uno – que envía el mensaje y otro que lo recibe. El mensaje siempre llega. Si el receptor no esta disponible para recibir el mensaje, el mensaje es enviado y se guarda en cola. Cuando entre el receptor, recibe el mensaje. Modelo Publicador/Suscriptor (Publish/Subscribe): Hay varios – clientes. Los que publican temas o eventos y los que ven estos tópicos. Son clientes los que envían como los que reciben. ●
  • 5. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp ¿Qué es STOMP? Streaming Text Orientated Messaging Protocol ● Proporciona un formato para que un cliente Stomp ● pueda comunicarse con cualquier Stomp Message Broker (Apache ActiveMQ). Clientes Stomp (C, C++, C# and .Net, Delphi, Flash, ● Java o Gozirra, Perl, PHP, Pike, Python, Ruby and Rails, Smalltalk) Stomp Brokers (Apache ActiveMQ, StompConnect, ● StompServer, Gozirra)
  • 6. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp Diagrama
  • 7. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp Diagrama Servidor Web Apache sirve una página HTML (con PHP ● también puede ser) al cliente. El cliente se conecta mediante la librería de Stomp al ● servidor Kaazing Gateway, y se subscribe a un canal (o varios) El servidor Kaazing Gateway crea un proxy TCP con el ● servidor ActiveMQ. El cliente envía datos a un canal (mediante Javascript) a ● Kaazing. Kaazing lo reenvía a ActiveMQ. ActiveMQ envía esos datos a todos los clientes conectados al canal, incluido Kaazing. Kaazing lo manda a todos los conectados, incluido el cliente que lo ha mandado.
  • 8. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp Diagrama En el servidor web Apache, hay un script en PHP ● corriendo continuamente. Está conectado al servidor ActiveMQ. Manda datos al ● servidor y a un canal específico. No necesita de Kaazing para mandar datos vía Stomp. ActiveMQ recoge los datos y los manda a todos los ● clientes conectados a ese canal, incluido Kaazing. Kaazing recoge los datos y los reenvía a todos los ● clientes conectados a ese canal mediante la librería de JavaScript.
  • 9. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp Instalación de Kaazing y ActiveMQ Descargamos las últimas versiones de: ● http://www.kaazing.org/confluence/display/KAAZING/Download ● http://activemq.apache.org/download.html ● Descomprimimos los archivos. En Apache ActiveMQ no ● cambiamos nada, lo dejamos tal como viene. Editar el fichero conf/gateway-config.xml de Kaazing. ● Entre las etiquetas <gateway-config> y </gateway- ● config> solo nos interesa un proxy a una dirección tcp para conectarnos con el Apache ActiveMQ usando el protocolo STOMP.
  • 10. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp Configuración de gateway-config.xml Todo lo que esté entre <gateway-config> lo ● comentamos y ponemos lo siguiente. <!­­ Proxy to STOMP server ­­> <service> <!­­ ws:// scheme refers to WebSocket ­­> <!­­ wss:// scheme refers to WebSocket (secure) ­­> <accept>ws://websocket.irontec.com:8001/activemq</accept> <accept>wss://websocket.irontec.com:9001/activemq</accept> <type>proxy</type> <properties> <connect>tcp://websocket.irontec.com:61613</connect> </properties> <cross­site­constraint> <allow­origin>http://websocket.irontec.com:80</allow­origin> <allow­origin>*</allow­origin> </cross­site­constraint> </service>
  • 11. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp Configuración de gateway-config.xml <accept> ● ponemos las conexiones que vamos a aceptar para este servicio. ● Son de tipo ws (web socket) y wss (web socket secure). Cuando un cliente se quiera conectar mediante JavaScript tendrá que hacerlo a esta dirección. <connect> ● ponemos la dirección del servidor Apache ActiveMQ, y el puerto ● donde va a escuchar el protocolo STOMP, por defecto en el 61613. <allow-origin> ● hay que indicar desde donde permitimos acceder al servicio. Si ● ponemos *, aceptamos las peticiones desde cualquier sitio. Si queremos restringirlo solo al nuestro, ponemos su dirección. Se pueden poner varios.
  • 12. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp Activar los servicios Entramos en la carpeta bin dentro del Apache ● ActiveMQ y ejecutamos ./activemq. Entramos en la carpeta bin dentro del Kaazing Gateway ● y ejecutamos ./gateway-start
  • 13. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp Librerías JS y PHP Una vez que ya tenemos los dos servicios corriendo, ● nos queda programar la parte del cliente. Vamos a usar unas librerías JS que vienen con el Kaazing, que se encargarán de emular los WebSocket, para poder conectarnos vía JavaScript al servidor. Dentro de web/html5 cogemos la libreria ByteSocket.js y de web/protocol cogemos StompClient.js. Con estas dos, ya nos vale para conectarnos con JavaScript. También vamos a necesitar una librería de PHP, que ● vamos a usar para mandar datos. Para bajarla, vamos a http://code.google.com/p/stompcli/downloads/list.
  • 14. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp tutorial.php En primer lugar hacemos el script PHP. Vamos a hacer ● que el script envíe cada cierto tiempo (entre 1 y 5 segundos, de forma aleatoria) un número entre 1 y 100. Creamos un objeto Stomp conectándonos a ● tcp://websocket.irontec.com:61613 (que es donde Apache ActiveMQ va a escuchar el protocolo Stomp) Enviamos datos a un canal de esa dirección tcp (vamos ● a usar el canal /topic/test) $con->send(quot;/topic/numbersquot;, $numero); –
  • 15. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp tutorial.php <?php //Necesitamos la librería Stomp.php que hemos bajado  require_once(quot;./phpstomp/Stomp.phpquot;); //Creamos un objeto Stomp, conectandonos al servidor que va a  escuchar el Stomp $con = new Stomp('tcp://websocket.irontec.com:61613'); $con­>connect(); //Hacemos la conexión //Un bucle infinito si queremos que esté siempre enviando while (true) { $time = rand(1,5); //Tiempo aleatorio de espera $numero = rand(1,100); //Número a enviar //Enviamos el numero al canal quot;numbersquot; $con­>send(quot;/topic/numbersquot;, $numero); sleep($time); //Hacemos una pausa } $con­>disconnect(); //Desconectamos ?>
  • 16. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp tutorial.html Vamos con el html. Ponemos un input para hacer un ● mini chat, a la vez que se reciben los números del php anterior. En la página html solo vamos a tener incluidos los archivos js que nos hacen falta (ByteSocket y StompClient para los websockets, JQuery, y tutorial.js donde meteremos nuestro código para recibir y mandar datos a través de Stomp. <script src=quot;ByteSocket.jsquot;></script> <script src=quot;StompClient.jsquot;></script> <script src=quot;jquery­1.3.2.min.jsquot;></script> <script src=quot;tutorial.jsquot;></script>
  • 17. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp tutorial.html Esto es el código que va dentro del <body> ● <div style=quot;margin: 10px; width:300px; float: left; border:  solid #000 1px;quot;> <input type=quot;textquot; size=quot;20quot; name=quot;textoquot; id=quot;textoquot; /> &nbsp;<input type=quot;buttonquot; name=quot;botonquot; id=quot;botonquot;  value=quot;Enviarquot; /> <div id=quot;divtextoquot;> </div> </div> <div id=quot;divnumerosquot; style=quot;margin: 10px; float: left;  width:300px; border: solid #000 1px;quot;> </div>
  • 18. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp tutorial.js $(document).ready(function(){ var stomp; //Variable donde vamos a guardar el objeto Stomp stomp = new StompClient(); //Creamos el objeto Stomp stomp.onopen = function(headers) { //Cuando se conecte al servidor Kaazing, nos  subscribimos al canal /topic/chat y /topic/numbers,  para recibir los datos que se envíen a esos canales stomp.subscribe(quot;/topic/numbersquot;); stomp.subscribe(quot;/topic/chatquot;); } //Cuando se reciban datos de la conexión stomp.onmessage = function(headers, body) { //En body se guardan los datos que se reciben //En headers[“destination”] indica a que canal se han  mandado los datos if (headers[“destination”] == quot;/topic/numbersquot;) { $(quot;#divnumerosquot;).append(quot;<p>El número es: quot;+body); } else if (headers[“destination”] == quot;/topic/chatquot;) { $(quot;#divtextoquot;).append(body); } }
  • 19. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp tutorial.js stomp.onclosed = function(headers) { //Si se desconecta, podemos meter código para  reconectar de nuevo o sacar un alert } //Hacemos la conexión al servidor Kaazing. Username y  password lo dejamos vacio. stomp.connect(quot;ws://websocket.irontec.com:8001/activemqquot;,  {username:quot;quot;, password:quot;quot;}); $(quot;#botonquot;).bind('click',function(){ if ($(quot;#textoquot;).val() != quot;quot;) { //Al dar a enviar, mandamos al canal /topic/chat lo  escrito en el input stomp.send($(quot;#textoquot;).val(),quot;/topic/chatquot;); $(quot;#textoquot;).val(quot;quot;); } } });
  • 20. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp Ejecutando el tutorial Ya tenemos los 3 archivos. Abrimos tutorial.html desde ● el navegador http://websocket.irontec.com/tutorial.html desde 2 ordenadores (o 2 navegadores) para probar el mini chat. Si escribimos en el input y damos a enviar, se ira ● añadiendo el texto debajo del input, en todos los navegadores donde tenga abierta la página. Para mandar los datos desde tutorial.php lo ejecutamos ● desde consola con “php tutorial.php” e irán apareciendo los números a la derecha del mini chat.
  • 21. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp Licencia Copyleft Copyright
  • 22. Kaazing Gateway + Apache ActiveMQ + JavaScript + Stomp Licencia Copyleft Este documento está protegido bajo la licencia ● Reconocimiento-SinObraDerivada 2.1 España de Creative Common (http://creativecommons.org/licenses/by- nd/2.1/es/) David Lores <david@irontec.com> Copyright © 2009 Irontec <contacto@irontec.com> Se permite la copia, modificación, distribución, uso comercial y realización de la obra, siempre y cuando se reconozca la autoría de la misma, a no sea ser que se obtenga permiso expreso del autor. El autor no permite distribuir obras derivadas a esta. Esta nota no es la licencia completa de la obra, sino una traducción de la nota orientativa de la licencia original completa (jurídicamente válida).