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.
