Nuestro equipo ha desarrollado eventos Server-Sent (SSE) para una tarea específica.
Estoy tratando de crear un cliente para escuchar transmisiones de eventos de nuestro servidor. Me las arreglé para hacer esto usando las bibliotecas de Jersey para Java. Sin embargo, dado que la mayor parte de nuestro código de cliente usa Spring, me gustaría tener un ejemplo de cómo se podría hacer esto usando Spring.
Pude encontrar muchos ejemplos en SSE en el lado del servidor para Spring. Sin embargo, no puedo encontrar ninguna documentación para el lado del cliente.
¿Spring admite SSE en el lado del cliente? En caso afirmativo, ¿puedo tener un ejemplo de cómo se puede lograr lo siguiente usando Spring ...
Envíe una solicitud HTTP GET a nuestro servidor...
OBTENER -> http://example.com/api/events/
encabezados ->
Aceptar:texto/secuencia de eventos
sessionKey:algunaCadena
La respuesta será un flujo de texto, que el cliente continuará recibiendo, hasta que el cliente decida cerrar la conexión.
Eche un vistazo a uno de los métodos de ejecución de Spring RestTemplate. Todos toman un ResponseExtractor como parámetro. Esta interfaz de devolución de llamada define un método: extractData(ClientHttpResponse response) . Al proporcionar su propio ResponseExtractor, puede hacer lo que quiera con la respuesta, como leerla línea por línea. Ejemplo ingenuo:
restTemplate.execute(a_url, HttpMethod.GET, request -> { }, response -> { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(response.getBody())); String line; try { while ((line = bufferedReader.readLine()) != null) { System.out.println("Got some data, let's use my ObjectMapper to parse into something useful!"); } } catch (IOException e) { //Something clever } return response; });