Olá, tenho uma aplicação Java JSF com primefaces e preciso que a aplicação que esta em execução no browser do usuário fique a esperando de forma assíncrona sem travar a tela por uma chamada remota que vem de um leitor de código de barras ethernet (tem vários protocolos, tipo sockets tcp/modbus/etc.) com o código lido e execute a ação de inclusão deste código.
Obs.: Já tenho a rotina desenvolvida, mas usando um leitor USB que funciona como um teclado, que quando lido o código é preenchido no formulário e ao perder o foco executa a inclusão. A comunicação com o equipamento eu já tenho o código funcionando em uma aplicação síncrona iniciada pelo JSF, mas não sei fazer sendo iniciada pelo cliente (leitor).
Gostaria de ideias e/ou exemplos de tecnologias e/ou patterns que poderia usar para atender essa necessidade.
Imagino que vc queira isso: Primefaces - Remote Command
Basta receber a requisição no backend, executar o procedimento que precisa e realizar o retorno dos dados necessários.
É isso?
Essa leitura de código de barras é algo demorado?
Olá Lucas, acredito que o exemplo de “Remote Command - Receive Values Back” possa funcionar se eu conseguir enviar uma chamada externa para ele, vou testar aqui e aviso se deu certo.
A leitura é muito rápida, mas o equipamento que faz a leitura não esta conectado fisicamente nem ao servidor de aplicação, nem na estação cliente. Ele se conecta via Rede Ethernet através de vários protocolos que ele disponibiliza (TCP ou Modbus ou Profnet, etc). Então assim que ele lê um código de barras ele inicia uma comunicação como o IP definido enviando o código lido, então preciso que minha aplicação fique aguardando o recebimento deste código para então realizar o processo de gravação no banco de dados e atualizar a página.
Obs.: preciso que seja assíncrono porque a página web também mostra os dados de produção em tempo real enviando comandos e coletando dados de outros equipamentos, a parte de enviar e coletar eu consigo fazer, só não sei como ficar aguardando por uma conexão externa e o ideal nessa aplicação seria aguardar, pois posso coletar o código lido, porém eu teria que fazer isso de 1 em 1 segundo, pois posso perder códigos lidos, sem contar que também posso tentar 20 ou mais coletas sem necessidade.