holyrics/jslib

Suporte à "require"

Closed this issue · 5 comments

Tenho um outro programa que gostaria de controlar via Holyrics mas o programa utiliza socket TCP (manipulação bem rudimentar mesmo com instruções em mensagens e Bytes). Consegui fazer um snippet para executar alguns comandos usando Node.js, mas ao levar o código para o Holyrics não consegui executar o import do socket TCP (var net = require('net');).

Sei que temos suporte à requisições HTTP, mas teria alguma forma de fazer conexão de socket TCP? Ou de realizar o import de tal pacote?

A engine JavaScript do Java não tem esse tipo de suporte, não é igual ao ambiente JavaScript nos navegadores.
Tecnicamente é até mais poderoso, pois pode utilizar os módulos nativos do próprio Java, só que isso não é liberado no Holyrics por questão de segurança.

Atualmente os protocolos disponíveis para comunicação são POST, GET e UDP.
Para comunicação TCP é necessária implementação no próprio código do programa, para disponibilização na camada intermediária jslib.

Posso verificar a possibilidade de implementação para a próxima atualização.
Caso queira acompanhar e testar as atualizações do programa, acesse o grupo beta: https://holyrics.com.br/_beta/join.html

No momento, não é o ideal, mas você pode criar seu próprio intermediário, deixar um processo em segundo plano no sistema operacional recebendo dados do Holyrics através dos protocolos disponíveis e reenviando para o destino que você quer via TCP.

Muito obrigado pelos exclarecimentos! Eu pensei em criar uma simples API pra fazer essa "tradução" mesmo, mas fico feliz em ver que o desenvolvimento da aplicação continua firme e forte!

Apenas para informação, a opção de comunicação TCP foi disponibilizada para produção na atualização de hoje v2.22.0

Excelente notícia! A documentação já foi atulizada? Não consegui achar a nova função lá

Ainda não está atualizada.
Mas a implementação é baseada em receptores, da mesma forma que cria um receptor POST, por exemplo

Na janela de receptores, pode ser gatilho ou API (menu ferramentas, diversos)
Crie um receptor URL, defina no campo URL/Host o IP e a porta no formato IP:PORT
E selecione o tipo TCP

Para fazer a requisição utilizando javascript

var receiver = 'nome ou id do receptor';
var r = h.apiRequest(receiver, {
  //utf-8 por padrão
  data: 'Texto que será enviado'
});

//r é a resposta da requisição
h.log(r);
//por padrão, r é o resultado dos bytes recebidos convertidos em string utf-8
//para alterar o tipo de retorno, adicione o parâmetro 'response_data_type' na requisição
var r = h.apiRequest(receiver, {
  data: 'Texto enviado',
  response_data_type: "string;ISO-8859-1"
});

var r = h.apiRequest(receiver, {
  data: 'Texto enviado',
  response_data_type: "base64"
});
var respostaEmBytes = h.base64Decode(r);


// -- Requisições Alternativas
var r = h.apiRequest(receiver, {
  data: 'Texto enviado',
  charset: 'ISO-8859-1'
});

var r = h.apiRequest(receiver, {
  //enviar array de bytes
  data: [30, 31, 32, 33]
});

//criando buffer de bytes
var buf = h.createByteBuffer();
buf.putByte(48);
buf.putInt(123); //4 bytes
//buf.putLong(1234); //8 bytes
buf.putString("olá"); //utf-8 default
buf.putString("olá", "ISO-8859-1");
var bytes = buf.toBytes();
//raw
//30 00 00 00 7b 6f 6c c3 a1 6f 6c e1
var r = h.apiRequest(receiver, {
  data: bytes
});