I have a spring-boot backend and wanted to create a SSE endpoint, sample:
@CrossOrigin(origins = "http://localhost:4200") // Angular Dev-Server
@GetMapping(path = "/stream-flux", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> streamFlux() {
return Flux.interval(Duration.ofSeconds(1))
.map(sequence -> "data: Flux - " + LocalTime.now().toString() + "\n\n")
.doOnSubscribe(subscription -> {
System.out.println("SSE-Stream started.");
})
.doOnNext(value -> {
System.out.println("SSE-Value sent: " + value);
})
.doOnError(error -> {
System.out.println("SSE-Error: " + error.getMessage());
})
.doOnComplete(() -> {
System.out.println("SSE-Stream complete.");
});
}
Now, this example works perfect with an http-call (and the respective spring-server settings), tested with CURL.
curl -v http://localhost:8080/stream-flux
But when I wanted to switch to https (of course with the right spring-boot server settings)
tested with the following call:
curl -k -v https://localhost:<ssl-port>/stream-flux
The values from the event doesn't come at all with https. I am using a self-signed certificate.
And the CURL-answer is confusing to me:
* schannel: remote party requests renegotiation
* schannel: renegotiating SSL/TLS connection
* schannel: SSL/TLS connection renegotiated
* Request completely sent off
Any approach to tackling this issue is highly appreciated.