A partir da versão 20.3.0.0 a comunicação entre o Smartclients e o Broker pode utilizar o protocolo WebSocket.
Isto possibilita utilizar o Broker mesmo em cenários onde o único ponto de entrada para a rede corporativa do cliente é um web server utilizado como proxy reverso, já que os web servers líderes de mercado (Apache, Nginx, etc) também possibilitam a utilização do protocolo WebSocket na comunicação com os clients.
Existem 2 configurações a serem feitas para a utilização de broker com WebSocket: no Broker e no Smartclient.
CENÁRIO BÁSICO DE USO
Neste cenário os smartclients se comunicam com o broker diretamente, sem nenhum intermediário (com exceção de eventuais firewalls de segurança), através de uma porta TCP não padronizada.
Configuração no Broker
(arquivo appserver.ini ou equivalente)
[BALANCE_SMART_CLIENT_DESKTOP]
; porta onde o broker aceita conexoes
LOCAL_SERVER_PORT = 10000
; hosts e portas dos appservers que vao ser balanceados
; neste exemplo o broker e os appservers estao na mesma maquina (física ou VM)
; esta e' uma configuracao comum, mas nao e' obrigatoria:
; tanto o broker quanto os appservers podem estar em máquinas diferentes e em reded diferentes
REMOTE_SERVER_01 = 127.0.0.1 10001
REMOTE_SERVER_02 = 127.0.0.1 10002
REMOTE_SERVER_03 = 127.0.0.1 10003
; etc
; chave que habilita websocket no broker
CLIENT_IS_WEBSOCKET=1
; chave que permite utilização de clients que não utilizam Websocket
; por exemplo, Smartclient HTML, Smartclient Electron, e mesmo Smartclient desktop
; que nao esteja configurado para uso com broker
; IMPORTANTE: neste caso, as portas dos appservers especificadas acima (10001, 10002, 10003)
; devem ser uma "porta multiprotocolo" (ver link xxx)
;
; esta chave nao e' obrigatoria, mas se nao estiver habilitada entao apenas Smartclients
; que estejam configurados para utilizar Broker com Websocket irao conseguir se comunicar com este broker
ALLOW_ANY_CLIENT = 1
Configuração do Smartclient
(arquivo smartclient.ini)
.
.
.
[broker-ws]
Server = http://broker.minha_empresa.com.br:10000
BrokerProxy = 1
.
.
.
Notar que a especificação do servidor (no caso é o broker) utiliza o esquema padrão "http://".
CENÁRIO REALISTA DE USO
Num cenário realista de uso o ponto de entrada da rede corporativa normalmente utiliza um proxy reverso para redirecionamento de serviços, balanceamento, etc. Exemplos de proxy reversos comuns são Apache e Nginx.
Muitas vezes este próximo reverso também é um terminador SSL: isto é, as conexões externas chegam encriptadas, mas o proxy reverso retira a encriptação quando manda para o backend interno.
Neste cenário os smartclients se comunicam com o broker através do proxy reverso, utilizando uma porta TCP padronizada: 80 para conexões não encriptadas, 443 para conexões encriptadas. Isto não é obrigatório, mas é o caso mais comum.
+-------------+ +------------+ +--------+ +-----------+
| smartclient +----- websocket (ssl) -----+ px reverso +---- websocket ----+ broker +----- TCP ----+ appserver |
+-------------+
+------------+ +--------+ +-----------+
Configuração no Broker
(arquivo appserver.ini ou equivalente)
[BALANCE_SMART_CLIENT_DESKTOP]
; porta onde o broker aceita conexoes
LOCAL_SERVER_PORT = 10000
; hosts e portas dos appservers que vao ser balanceados
; neste exemplo o broker e os appservers estao na mesma maquina (física ou VM)
; esta e' uma configuracao comum, mas nao e' obrigatoria:
; tanto o broker quanto os appservers podem estar em máquinas diferentes e em reded diferentes
REMOTE_SERVER_01 = 127.0.0.1 10001
REMOTE_SERVER_02 = 127.0.0.1 10002
REMOTE_SERVER_03 = 127.0.0.1 10003
; etc
; chave que habilita websocket no broker
CLIENT_IS_WEBSOCKET=1
; chave que permite utilização de clients que não utilizam Websocket
; por exemplo, Smartclient HTML, Smartclient Electron, e mesmo Smartclient desktop
; que nao esteja configurado para uso com broker
; IMPORTANTE: neste caso, as portas dos appservers especificadas acima (10001, 10002, 10003)
; devem ser uma "porta multiprotocolo" (ver link xxx)
;
; esta chave nao e' obrigatoria, mas se nao estiver habilitada entao apenas Smartclients
; que estejam configurados para utilizar Broker com Websocket irao conseguir se comunicar com este broker
ALLOW_ANY_CLIENT = 1
Notar que a configuração do broker é essencialmente a mesma do "cenário básico".
Configuracao do Smartclient
(arquivo smartclient.ini)
.
.
.
[broker-ws]
Server = https://broker_nginx.minha_empresa.com.br
BrokerProxy = 1
.
.
Notar que a especificação do servidor agora aponta para o proxy reverso que está na entrada da rede corporativa, e utiliza o esquema padrão "https://" que indica que a conexão é encriptada.
Na configuração do proxy reverso vão estar as regras que redirecionam as conexões para o host virtual "broker_nginx" para o ip e porta internos do broker, e vai servir como terminador SSL para as conexões que entram encriptadas.