Ir para conteúdo
  • Cadastre-se

dev botao

Como conectar no acbr monitor via socket com js?


Lennon17
Ver Solução Respondido por Lennon17,

Recommended Posts

Estou tentando realizar a conexão via socket com js. utilizando o padrão do js faço assim:

 

socket = new WebSocket('ws://192.168.1.73:3434');

 

Não conecta e gera erro no log assim:

Conectado em: 14/12/23 21:43:20
Maquina: 192.168.1.73
Esperando por comandos.
14/12/2023 21:43:20 - ALERTA: Fim da Conexão com: 192.168.1.73 em: 14/12/23 21:43:20

 

Como seria a forma corretar para não acontecer "fim de conexão" ?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Estou com o mesmo problema por incrivel que pareça, me retorna o mesma coisa, ela conecta mas quebra a conexao

 

function enviarComandoTCP(comando) {
  return new Promise((resolve, reject) => {
    const port = 3434;
    const host = "192.168.0.102";
 
    // Criação do socket TCP
    const socket = new JsonSocket(new net.Socket());
 
    // Tenta conectar ao servidor
    socket.connect(port, host);
 
    // Lidando com eventos do socket
    socket.on("connect", () => {
      socket.sendMessage(comando); // Envia o comando ao servidor quando conectado
    });
 
    socket.on("message", (resposta) => {
      socket.end(); // Encerra a conexão após receber a resposta
      resolve(resposta); // Resolve a Promise com a resposta do servidor
    });
 
    socket.on("error", (erro) => {
      reject(erro); // Rejeita a Promise em caso de erro na conexão
    });
  });
}
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solution

Não conseguir resolver no browser, mas com node.js sim, segue exemplo:

 

const net = require('net')
const client = new net.Socket()
// PORT - 3434
// HOST - 127.0.0.1

client.connect(PORT, HOST, function () {
  console.log(`CONNECTED TO: [PORT: ${PORT}] [HOST: ${HOST}]`)
  client.write('ativo \r\n.\r\n')
})

 

Segue exemplo básico com impressora:
 

client.write('ESCPOS.Ativar() \r\n.\r\n')
client.write('ESCPOS.imprimir("</zera></ce></linha_dupla></lf>EAN 8: 1234567</lf><ean8>1234567</ean8></pular_linhas></corte_total>")  \r\n.\r\n')

 

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • 1 mês depois ...

JS até  usar uma conexão  socket, mas o navegador abre um handle de comunicação http, por isso não vai funcionar, pq ACBRMonitor não responde em conexão http.
fiz um teste usando uns servidor de ponte feito em node.js,  e funcionou
App no navegador fala via socket(http) com o servidor de ponte(node.js) e o node js fala via(socket tcp)com ACBRMonitor. aí precisa avaliar se vale apena implementar este servidor de ponte.
 

Link para o comentário
Compartilhar em outros sites

14 horas atrás, Juliano Gonçalves disse:

JS até  usar uma conexão  socket, mas o navegador abre um handle de comunicação http, por isso não vai funcionar, pq ACBRMonitor não responde em conexão http.
fiz um teste usando uns servidor de ponte feito em node.js,  e funcionou
App no navegador fala via socket(http) com o servidor de ponte(node.js) e o node js fala via(socket tcp)com ACBRMonitor. aí precisa avaliar se vale apena implementar este servidor de ponte.
 

Bom dia Juliano. Fiz algo parecido. Implementei um servidor web local que recebe as requisições da minha aplicação web. Esta aplicação web estabelece as conexões sockets com o ACBrMonitor. Observo porém que performence não é das melhores. Atualmente estamos implementando uma aplicação desktop com todos os componentes do ACBr. Fizemos com que essa aplicação desktop permita as conexões websocket diretamente. A performance tem sido bem maior. De modo geral, o caminho é esse, ter uma ponte da aplicacação web com a máquina local. Se existe outra forma, não descobri ainda.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Moderadores
1 hora atrás, Luiz Fernando Rodrigues disse:

Bom dia Juliano. Fiz algo parecido. Implementei um servidor web local que recebe as requisições da minha aplicação web. Esta aplicação web estabelece as conexões sockets com o ACBrMonitor. Observo porém que performence não é das melhores. Atualmente estamos implementando uma aplicação desktop com todos os componentes do ACBr. Fizemos com que essa aplicação desktop permita as conexões websocket diretamente. A performance tem sido bem maior. De modo geral, o caminho é esse, ter uma ponte da aplicacação web com a máquina local. Se existe outra forma, não descobri ainda.

use o lib do acbr que nada mais é que uma dll no lugar do monitor. conforme já sugeri a ele

  • Curtir 1
Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.