CGI - Ejecucion paralela

 
Vista:

Ejecucion paralela

Publicado por Mauricio (1 intervención) el 09/04/2002 17:52:51
Hola...tengo un cgi en perl que maneja un socket de comunicacion el cual esta siempre atento por nuevos mensajes que le lleguen (loop) y necesito en un cierto instante abrir una pagina web (de acuerdo a los mensajes que recibo). El problema que tengo es que la página se ejecuta cuando el cgi termina, por lo que pierdo la comunicacion que tenia establecida.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Abrir una página web desde un CGI Perl sin perder la comunicación

Publicado por Alejandro (140 intervenciones) el 23/08/2023 17:58:56
Abrir una página web desde un CGI Perl sin perder la comunicación puede ser un desafío, ya que el flujo de ejecución de un CGI suele ser lineal y se espera que el script termine para enviar la respuesta HTTP al cliente. Sin embargo, puedes intentar abordar este problema utilizando un enfoque que permita abrir una nueva ventana del navegador sin interrumpir la comunicación en curso.

Método 1: Usar JavaScript en la página web:

1. Modifica el HTML generado por el CGI:

En lugar de abrir una página web directamente desde el script CGI, puedes insertar código JavaScript en la página HTML que abra la página web en una nueva ventana del navegador.

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
 
my $cgi = CGI->new;
 
# Genera la respuesta HTTP y el código HTML
print $cgi->header('text/html');
print "<html><head><title>Redireccionando...</title></head><body>";
print "<script>window.open('https://www.ejemplo.com', '_blank');</script>";
print "<p>Redireccionando...</p>";
print "</body></html>";

En este ejemplo, se usa el código JavaScript `window.open` para abrir la página web en una nueva ventana.

2. Continúa la comunicación:

Es importante que el script CGI no termine inmediatamente después de abrir la ventana. Debe continuar el ciclo de comunicación o el bucle que tenías establecido para recibir mensajes.

Método 2: Usar redireccionamiento HTTP:

1. Modifica el HTML generado por el CGI:

En lugar de usar JavaScript, puedes redirigir automáticamente al navegador utilizando un encabezado HTTP de redireccionamiento. Esto hará que el navegador abra la página web en una nueva ventana.

1
2
3
4
5
6
7
8
9
#!/usr/bin/perl
use strict;
use warnings;
use CGI;
 
my $cgi = CGI->new;
 
# Genera el encabezado de redireccionamiento
print $cgi->redirect('https://www.ejemplo.com');

2. Continúa la comunicación:

Al igual que en el primer método, asegúrate de que el script CGI continúe el ciclo de comunicación después de enviar el encabezado de redireccionamiento.

Ten en cuenta que estos métodos no garantizan una experiencia perfecta en todos los navegadores y configuraciones, ya que algunos navegadores pueden bloquear ventanas emergentes o manejar el redireccionamiento de manera diferente. Además, el mantenimiento de la comunicación continua mientras se redirige o abre una página web puede ser complicado y depende en gran medida de la estructura de tu aplicación y de cómo manejas los hilos o la concurrencia. Si estás desarrollando una aplicación más compleja, podría ser útil explorar soluciones más avanzadas, como el uso de tecnologías de comunicación asíncrona o WebSocket.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar