Reenvío
Puedes usar este plugin para reenviar solicitudes de un plugin a otro. La principal razón por la que existe es para proporcionar impresión en red local (LAN).
Si tienes una computadora con una impresora conectada y el plugin ejecutándose en ella, puedes imprimir llamando a localhost, pero cuando quieres llamar al plugin desde otra computadora (es decir, llamando a una IP en lugar de localhost), esto no es posible con JavaScript del lado del cliente.
Reenvío de impresión
Método: POST
o GET
. El método debe ser el mismo que usarías si llamaras al endpoint sin reenviarlo. Usa POST
para imprimir y GET
para versión, apagar u obtener impresoras.
En otras palabras: realiza exactamente la misma solicitud que harías localmente, pero hazla a http://localhost:8000/reenviar
y especifica la URL que especificarías en el parámetro host
.
URL relativa: /reenviar?host=host_remoto
Respuesta
Si el reenvío es exitoso, la respuesta será la misma como si hubieras llamado al método localmente. De lo contrario, el servidor no responderá y recibirás una respuesta vacía.
Parámetros GET
Necesitas llamar a este endpoint de la API indicando el host al que se reenviará la solicitud.
Parámetro GET | Tipo | Ejemplo |
---|---|---|
host | String | http://localhost:8000/imprimir para imprimir, http://localhost:8000/impresoras para obtener las impresoras |
Reenviar e imprimir (ejemplo de código)
Aquí tienes un ejemplo para reenviar e imprimir
try {
// Computadora remota donde el plugin
// se está ejecutando y la impresora está conectada
const hostRemoto = "http://192.168.0.24:8000/imprimir";
const listaDeOperaciones = [
{
nombre: "EscribirTexto",
argumentos: ["Hola\nImpresora"],
}
];
const nombreImpresora = "Nombre_impresora";
const payload = {
serial: "",
operaciones: listaDeOperaciones,
nombreImpresora: nombreImpresora,
};
const respuestaHttp = await fetch("http://localhost:8000/reenviar?host=" + hostRemoto, {
method: "POST",
body: JSON.stringify(payload),
});
const respuesta = await respuestaHttp.json();
if (respuesta.ok) {
console.log("Impreso correctamente");
} else {
console.error(respuesta.message);
}
} catch (e) {
console.log(e)
}
Para imprimir, normalmente llamarías a http://localhost:8000/imprimir
con el método POST
, llamando al endpoint relativo /imprimir
, pero en este caso debes llamar a /reenviar
y especificar la URL del host remoto con imprimir
, cambiando localhost por la IP del host remoto.
Si el reenvío es exitoso, la respuesta será la misma que el método imprimir.
Reenviar y obtener impresoras (ejemplo de código)
Aquí tienes un ejemplo para reenviar y obtener la lista de impresoras
try {
// Computadora remota donde el plugin
// se está ejecutando y la impresora está conectada
const hostRemoto = "http://192.168.0.24:8000/impresoras";
const respuestaHttp = await fetch("http://localhost:8000/reenviar?host=" + hostRemoto);
const listaDeImpresoras = await respuestaHttp.json();
console.log(listaDeImpresoras);
} catch (e) {
// El plugin no respondió o no pudo reenviar la petición
console.log(e)
}
Para obtener las impresoras, normalmente llamarías a http://localhost:8000/impresoras
con el método GET
, llamando al endpoint relativo /impresoras
, pero en este caso debes llamar a /reenviar
y especificar la URL del host remoto con impresoras
, cambiando localhost por la IP del host remoto.
Si el reenvío es exitoso, la respuesta será la misma que el método obtener impresoras.
Más métodos
El endpoint /reenviar
actúa como un proxy, puedes reenviar cualquier solicitud incluyendo versión y apagar.