On Github alexvictoor / devoxxfr-sse
Alexandre Victoor Architecte à la SGCIB alexvictoor@gmail.com https://github.com/alexvictoor @alex_victoor
GET /mystream HTTP/1.1 Host: localhost Accept: text/event-stream
HTTP/1.1 200 OK Connection: keep-alive Content-Type: text/event-stream Transfer-Encoding: chunked
HTTP/1.1 200 OK Connection: keep-alive Content-Type: text/event-stream Transfer-Encoding: chunked data: un premier événement, du txt ou n'importe quoi
HTTP/1.1 200 OK Connection: keep-alive Content-Type: text/event-stream Transfer-Encoding: chunked data: un premier événement, du txt ou n'importe quoi data: un deuxième data: sur data: plusieurs data: lignes
HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: text/event-stream
Transfer-Encoding: chunked
data: un premier événement, du txt ou n'importe quoi
data: un deuxième
data: sur
data: plusieurs
data: lignes
data: {"msg": "un troisieme en json"}
var source = new EventSource("http://localhost:8081/stream");
source.onmessage = function(event) {
// console.log(event.data);
};
Une api similaire à ce que l'on en websocket
id: 123 event: TaskCompleted data: avec un id (123) data: et un type (TaskCompleted)
var source = new EventSource("http://localhost:8081/stream");
source.addEventListener("TaskCompleted", function (event) {
// console.error(event.data);
});
Une api similaire à ce que l'on en websocket
id: 123 data: dernier événement reçu ===== coupure =====tout est fait dans le navigateur
id: 123 data: dernier événement reçu ===== coupure ===== GET /mystream HTTP/1.1 Host: localhost Accept: text/event-stream Last-Event-ID: 123tout est fait dans le navigateur
HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: text/event-stream
Transfer-Encoding: chunked
retry: 5000
data: { ... }
@GET
@Produces(SseFeature.SERVER_SENT_EVENTS)
public EventOutput getMyStream() {
EventOutput eventOutput = new EventOutput();
// ...
return eventOutput
}
eventOutput.write(event);