EventStreamResource.java

package com.workbenchclassic;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.sse.Sse;
import javax.ws.rs.sse.SseEventSink;

@Path("/events")
public class EventStreamResource {

    @GET
    @Produces(MediaType.SERVER_SENT_EVENTS)
    public void listen(
            @QueryParam("machineID") String machineID,
            @Context SseEventSink eventSink,
            @Context Sse sse) {

        if (machineID == null || machineID.isBlank()) {
            eventSink.close();
            return;
        }

        EventBus.register(machineID, eventSink, sse);
    }
}