SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
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).

Weitere ähnliche Inhalte

Andere mochten auch

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
 

Andere mochten auch (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
 

Ähnlich wie Kaazing Gateway + Apache Active MQ + Javascript + Stomp

Ähnlich wie 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
 

Mehr von 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
 

Mehr von 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
 

Kürzlich hochgeladen

definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 

Kürzlich hochgeladen (20)

definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 

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).