¿Es posible escribir texto en una página web después de que se haya cargado?

user9841626:

A ver si directamente a un ejemplo para explicar con más detalle.

final var socket = new java.net.ServerSocket(1234);
for (;;)
{
     try (final var client = socket.accept())
     {
          client.getOutputStream().write("HTTP/1.1 200 OK\r\n\r\n".concat(java.time.Instant.now().toString()).getBytes());
     }
}

Cuando abro mi navegador de su elección ( Firefox tos ) Voy a recibir la hora y fecha actuales. La pregunta ahora es cómo puedo escribir en ese socket en un punto posterior en el tiempo.

solución hipotética

Aquí hay algo Ya he intentado, pero no funciona en absoluto.

final var socket = new java.net.ServerSocket(1234);
    for (;;)
    {
         try (final var client = socket.accept())
         {
              client.getOutputStream().write("HTTP/1.1 200 OK\r\n\r\n".concat(java.time.Instant.now().toString()).getBytes());
              client.getOutputStream().flush();
              Thread.sleep(1000L);
              client.getOutputStream().write("And another paragraph.".getBytes());
         } 
    }

El resultado es una carga de la página web por aproximadamente un segundo, imprimiendo el siguiente resultado (puede variar debido a diferentes fecha y la hora en su extremo).

2019-01-19T18:19:15.607192500Z
And another paragraph.

En su lugar me gustaría que el ver algo como lo siguiente:

  1. imprimir la fecha y hora actuales.
  2. esperar un segundo sin el contenido de la página Web cambiante.
  3. imprimir el siguiente párrafo.

¿Cómo hago para implementar eso?

Gutch:

¿Es posible que el servidor de texto a escribir en una página web después de que se carga? Sí, sin duda es, pero en estos días sospecho que se realiza en raras ocasiones. Empecé desarrollo web en la década de 1990 y en aquel entonces que era una técnica bastante común. Lo usamos para escribir mensajes de chat en vivo a los navegadores sin Javascript. En estos días, JavaScript es ubicua y poderosa, por lo que el uso de JavaScript en el cliente para actualizar una página va a ser la mejor opción en la mayoría de los casos.

Dicho esto, las tecnologías que se usan para escribir actualizaciones del lado del servidor en ese entonces debería funcionar ahora. Sospecho que la razón no ve cambios en su navegador es porque no sabe que debe empezar a mostrar la página antes de que todo se carga. El uso de codificación de transferencia en una tecnología de 1990 sigue siendo soportado por los navegadores modernos, que debe resolver. Se permite que el servidor para indicar cuando un 'trozo' de los datos se ha completado y los navegadores generalmente procesar cada trozo de inmediato en lugar de esperar a que todos los trozos en llegar.

La forma más fácil de utilizar la codificación de transferencia fragmentada es utilizar una biblioteca de HTTP como Apache HttpComponents , luego envolver el flujo de salida en la clase correspondiente:

final var socket = new java.net.ServerSocket(1234);
for (;;)
{
  try (final var client = socket.accept())
  {
    var outputStream = new ChunkedOutputStream(client.getOutputStream());
    outputStream.write("HTTP/1.1 200 OK\r\n\r\n".concat(java.time.Instant.now().toString()).getBytes());
    outputStream.flush();
    Thread.sleep(1000L);
    outputStream.write("And another paragraph.".getBytes());
  }
}

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=215153&siteId=1
Recomendado
Clasificación