My example Code :
@GET
@Path("/reactive")
@Produces(MediaType.SERVER_SENT_EVENTS)
@RestSseElementType(MediaType.APPLICATION_JSON)
public Multi<OutboundSseEvent> reactive() {
return Multi.createFrom().ticks().every(Duration.ofSeconds(1))
.onItem().transform(n -> creaMessaggioSse(n,"SseReactive"));
}
private OutboundSseEvent creaMessaggioSse(Long evt, String nome){
return sse.newEventBuilder()
.data("Evento-"+evt)
.id("Id-"+evt)
.name(nome)
.build();
}
My output is :
data:{"name":"SseReactive","comment":null,"id":"Id-0","type":"java.lang.String","genericType":"java.lang.String","mediaType":{"type":"text","subtype":"plain","parameters":{},"wildcardType":false,"wildcardSubtype":false},"mediaTypeSet":false,"data":"Evento-0","reconnectDelay":-1,"escape":false,"reconnectDelaySet":false}``
instead of
id:Id-1
event:SseStandard
data:Evento-1
That's because the code executed is (finded by debug)
PublisherResponseHandler.onNext(Object item) {
OutboundSseEventImpl event = new OutboundSseEventImpl.BuilderImpl().data(item).build();
SseUtil.send(requestContext, event)
So the event "sent" has only data.
Where am I wrong ??