WebSocket Kaazing WebSocket Gateway (KWG)

por | 2 febrero, 2018

¿Qué es un WebSocket?

Básicamente es un sistema que permite comunicaciones bidireccionales de diferentes tipos sobre un único socket TCP. Se utiliza habitualmente entre navegadores y servidores web permitiendo la comunicación a través de firewalls o incluso proxies utilizando un único puerto estándar como el 80 http.

Por decirlo de alguna manera, un WebSocket se comporta como un equivalente a abrir varios puertos TCP (distintos servicios) contra un servidor utilizando sólo el puerto 80 u otro prefijado. Los servicios son multiplexados sobre un único puerto TCP.

El protocolo WebSocket ha sido normalizado en la RFC 6455.

En el lado del cliente, WebSocket está ya implementado en la mayoría de los navegadores y se utiliza un nuevo esquema de URI:

ws: para las conexiones no cifradas
wss: para las conexiones cifradas

 

¿Qué es Kaazing WebSocket Gateway (KWG)?

Kaazing WebSocket Gateway es un servidor Websocket concebido como una plataforma web para el ámbito empresarial. Básicamente es un servidor WebSocket para permitir la conectividad TCP directa a través de la Web, así como las extensiones de servidor listas para la empresa, seguridad mejorada y validación del protocolo.

Para más información:

https://kaazing.com/products/websocket-gateway/

 

Instalando Kaazing WebSocket Gateway (KWG)

Vamos a realizar la instalación del Kaazing WebSocket Gateway en un servidor CentOS 7 con conexión directa a Internet.

Descargamos la aplicación:  kaazing-enterprise-gateway-5.7.3.tar.gz

Descomprimimos en nuestro home:

$ tar -xzvf kaazing-enterprise-gateway-5.7.3.tar.gz

Entramos en el directorio:

$ cd kaazing-enterprise-gateway-5.7.3

 

Lanzando Kaazing WebSocket Gateway (KWG)

Para lanzar localmente el servidor:

$ cd bin

$ ./gateway.start
INFO Kaazing Gateway (5.7.3)
INFO Configuration file: /home/Carmencita/kaazing-enterprise-gateway-5.7.3/conf/gateway-config.xml
INFO Checking license information
INFO No valid Kaazing license found
INFO Using Kaazing developer license, maximum 100 connections
INFO Starting server
INFO Starting services
INFO http://localhost:8000/
INFO ws://localhost:8000/amqp
INFO ws://localhost:8000/echo
INFO ws://localhost:8000/jms
INFO Started services
INFO Started server successfully in 0,784 secs at 2018-02-01 12:04:00

 

Con esto ya podemos probar una conexión local. Pero en nuestro caso es un servidor directamente conectado a Internet así que realizamos los siguientes cambios:

Editamos el fichero /conf/gateway-config.xml

$ cd conf
$ nano gateway-config.xml

y configuramos el  valor gateway.hostname con el nombre DNS asociado a nuestro servidor en Internet, por ejemplo myserver.com

<properties>
  <property>
    <name>gateway.hostname</name>
    <value>myserver.com</value>
  </property>
  <property>
    <name>gateway.base.port</name>
    <value>8000</value>
  </property>
  <property>
    <name>gateway.extras.port</name>
    <value>8001</value>
  </property>
</properties>

 

Reiniciamos el servidor:

 

[Carmencita@vps270939 bin]$ ./gateway.start
INFO Kaazing Gateway (5.7.3)
INFO Configuration file: /home/Carmencita/kaazing-enterprise-gateway-5.7.3/conf/gateway-config.xml
INFO Checking license information
INFO No valid Kaazing license found
INFO Using Kaazing developer license, maximum 100 connections
INFO Starting server
INFO Starting services
INFO http://myserver.com:8000/
INFO ws://myserver.com:8000/amqp
INFO ws://myserver.com:8000/echo
INFO ws://myserver.com:8000/jms
INFO Started services
INFO Started server successfully in 0,820 secs at 2018-02-01 12:12:49

Para probarlo abrimos un navegador e intentamos abrir el puerto 8000 del servidor, si todo está bien el servidor  deberá responder con la página:

Ahora podemos hacer una prueba echo contra el servidor: ws://vps270939.ovh.net:8000/echo.

Para ello disponemos de un enlace en la parte derecha «try an echo test»

Pulsamos en «Connect» y enviamos un mensaje.

Nota: sólo utilizamos ws y no wss pues no hemos configurado la encriptación en el servidor.

 

Instalación del Kaazing WebSocket Gateway (KWG) como servidor en internet tras una red local

En el caso de que el servidor se encuentre en una red local, dispondrá de una IP privada y se conectará a través de un router haciento NAT.

Debemos entender que el KWG acepta conexiones de un modo similar a un típico virtual host en Apache. Cuando se recibe una petición al servidor, el servicio se identifica por el URI (URL) que se le incluye en la petición HTTP. Si en la petición solo se utiliza su dirección IP se sirve un contenido por defecto. En el caso de que el servidor se encuentre en una red local, la IP es distinta en la red local y en internet por la que la resolución local también debe ser distinta para la misma URI utilizada.

Por ejemplo:

  • Tenemos un  Kaazing WebSocket Gateway que está en un equipo local con IP 192.168.1.38.
  • La IP pública que se utilizada en el acceso a Internet supongamos que es la 217.216.110.110.
  • Debemos configurar el forwarding en el router de acceso a Internet mapeando el puerto 8000 hacia el servidor local 192.168.1.38.
  • Debemos disponer de un nombre DNS asociado a nuestra IP pública de conexión a Internet. Supongamos por ejemplo que nuestro nombre DNS es myaccces.myprovider.com.
  • Ahora este nombre en mi red local debe corresponder a la IP local de mi servidor porque el servidor arranca los servicios sobe esa IP, no la de Internet. Así que debo configurar ese nombre en el el servidor y en cualquier equipo local que quiera acceder a él.

En el caso de que el servidor sea un equipo Linux, editamos el fichero /etc/hosts añadiendo la siguiente entrada:

192.168.1.38              myaccces.myprovider.com

En el caso de que el servidor sea un equipo Windows, el archivo hosts se encuentra en:

C:\Windows\System32\drivers\etc

  • Ahora tenemos que editar el fichero gateway-config.xml en el servidor y configuramos la parte properties:
<properties>
   <property>
   <name>gateway.hostname</name>
   <value>myaccces.myprovider.com</value>
</property>

<property>
   <name>gateway.port</name>
   <value>8000</value>
   </property>
</properties>

 

  • Arrancamos el servidor:
C:\kaazing-enterprise-gateway-5.7.3\bin>gateway.start.bat
INFO  Kaazing Gateway (5.7.3)
INFO  Configuration file: C:\Users\Javielitolito\Desktop\kaazing-enterprise-gateway-5.7.3\conf\gateway-config.xml
INFO  Checking license information
INFO    No valid Kaazing license found
INFO  Using Kaazing developer license, maximum 100 connections
INFO  Starting server
INFO  Starting services
INFO    http://myaccces.myprovider.com:8000/
INFO    ws://myaccces.myprovider.com:8000/amqp
INFO    ws://myaccces.myprovider.com:8000/echo
INFO    ws://myaccces.myprovider.com:8000/jms
INFO  Started services
INFO  Started server successfully in 0,347 secs at 2018-01-31 20:04:12

 

Por último sólo quedaría verificar que accedemos el servidor como se ha indicado antes (siempre apuntando al nombre DNS tanto en la red local como en un equipo desde otro sitio en Internet).

 

 

A partir de aquí se podrían configurar los servidos para ser utilizados a través del  Kaazing WebSocket Gateway.

 

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *