Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

A partir da versão 20.3.0.0 a comunicação entre o 

Inclusão de trecho
smartclient
smartclient
nopaneltrue
e o 
Inclusão de trecho
broker
broker
nopaneltrue
 pode utilizar o protocolo WebSocket.

Isto possibilita utilizar o 

Inclusão de trecho
broker
broker
nopaneltrue
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 

Inclusão de trecho
broker
broker
nopaneltrue
com WebSocket. A seguir detalharemos isto.


Cenário A

Neste cenário os 

Inclusão de trecho
smartclient
smartclient
nopaneltrue
 se comunicam com o 
Inclusão de trecho
broker
broker
nopaneltrue
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 

Inclusão de trecho
broker
broker
nopaneltrue

Configuração do 

Inclusão de trecho
smartclient
smartclient
nopaneltrue

Recomendação de leitura: Porta Multiprotocolo

Sem Formato
(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"
;
; 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
Sem Formato
(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 B


Num cenário o ponto de entrada da rede corporativa normalmente utiliza um proxy reverso (Apache ou Nginx, por exemplo) para redirecionamento de serviços, balanceamento, etc.

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

Inclusão de trecho
smartclient
smartclient
nopaneltrue
 se comunicam com o 
Inclusão de trecho
broker
broker
nopaneltrue
através do proxy reverso, utilizando uma porta TCP padronizada:  80 para conexões não encriptadas, 443 para conexões encriptadas.
Observação: Isto não é obrigatório, mas é o caso mais comum.

Informações

Na configuração do proxy reverso deverão estar as regras que vão tratar as conexões originadas do 

Inclusão de trecho
smartclient
smartclient
nopaneltrue
 apontando para o host virtual "broker_nginx" (ver smartclient.ini exemplo abaixo), e fazer o redirecionamento dessas conexões para o 
Inclusão de trecho
broker
broker
nopaneltrue
que está no backend.

Essas regras também deverão configurar o terminador SSL, para que as conexões cheguem não encriptadas no

Inclusão de trecho
broker
broker
nopaneltrue
.

Configuração no 

Inclusão de trecho
broker
broker
nopaneltrue

Configuração do 

Inclusão de trecho
smartclient
smartclient
nopaneltrue

Sem Formato
(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 https://tdn.totvs.com/display/tec/Application+Server+-+Porta+Multiprotocolo)
;
; 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".



Sem Formato
(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.