Si tenés un servidor websocket funcionando con voryx/Thruway probablemente quieras configurarlo para trabar bajo protocolo de encriptación segura en los navegadores (wss://).

Es importante destacar que esta configuración no requiere modificar nada del servidor Wamp. Sólo se necesita modificar la configuración de Apache y la URL utilizada por el cliente Wamp que utilizará el protocolo seguro.

Voy a compartir la configuración con la que logré hacerlo andar, pero básicamente la guía de por dónde conectar los cabos la tomé de este issue de GitHub.

Importante: la comunicación entre Apache y Thruway no estará encriptada, pero sí lo estará entre el navegador y Apache.

Un poco de contexto…

  1. Mi servidor Wamp trabaja en el puerto 9090 (escuchando0.0.0.0)
  2. Mi cliente AutobahnJS conecta bien aws://127.0.0.1:9090
  3. Quiero utilizar el mismo puerto seguro 443 también para la conexión wss.

Configuración de Apache

httpd.conf

Necesitás modificar el archivohttpd.conf agregando los siguientes módulos:

  1. mod_proxy
  2. mod_proxy_wstunnel

httpd-vhost.conf

Luego, es necesario configurar el virtual host para la conexión HTTPS y la redirección WSS al WS mediante el proxy:

<VirtualHost *:443>
  # Common SSL Config
  ServerName my-site.test
  SSLEngine on
  SSLCertificateFile "/usr/local/etc/httpd/server.crt"
  SSLCertificateKeyFile "/usr/local/etc/httpd/server.key"
  DocumentRoot "/Users/nahuelhds/Sites/my/site"
  <Directory  "/Users/nahuelhds/Sites/my/site">
    Options +Indexes +FollowSymLinks +MultiViews
    AllowOverride All
    Require local
  </Directory>
  # Websocket proxy
  # wss redirects to working ws protocol
  ProxyPass /wss ws://127.0.0.1:9090 retry=0 keepalive=On 
  ProxyPassReverse /wss ws://127.0.0.1:9090 retry=0 
</VirtualHost>

Reiniciar Apache para que los cambios sean impactados.

WebSocket Client URL

Ya podés usar esta URL para el WebSocket Seguro: wss://my-site.test/wss

Para testear que funcione correctamente se puede utilizar la herramienta http://www.websocket.org/echo.html




¡Gracias por tu tiempo!

Soy nahuelhds. Si te gusta lo que hago, podés...