private SseEmitter.SseEventBuilder adapt(ServerSentEvent<?> sse) { SseEmitter.SseEventBuilder builder = SseEmitter.event(); String id = sse.id(); String event = sse.event(); Duration retry = sse.retry(); String comment = sse.comment(); Object data = sse.data(); if (id != null) { builder.id(id); } if (event != null) { builder.name(event); } if (data != null) { builder.data(data); } if (retry != null) { builder.reconnectTime(retry.toMillis()); } if (comment != null) { builder.comment(comment); } return builder; } }
private SseEmitter.SseEventBuilder adapt(ServerSentEvent<?> sse) { SseEmitter.SseEventBuilder builder = SseEmitter.event(); String id = sse.id(); String event = sse.event(); Duration retry = sse.retry(); String comment = sse.comment(); Object data = sse.data(); if (id != null) { builder.id(id); } if (event != null) { builder.name(event); } if (data != null) { builder.data(data); } if (retry != null) { builder.reconnectTime(retry.toMillis()); } if (comment != null) { builder.comment(comment); } return builder; } }
private SseEmitter.SseEventBuilder adapt(ServerSentEvent<?> sse) { SseEmitter.SseEventBuilder builder = SseEmitter.event(); String id = sse.id(); String event = sse.event(); Duration retry = sse.retry(); String comment = sse.comment(); Object data = sse.data(); if (id != null) { builder.id(id); } if (event != null) { builder.name(event); } if (data != null) { builder.data(data); } if (retry != null) { builder.reconnectTime(retry.toMillis()); } if (comment != null) { builder.comment(comment); } return builder; } }
@Test public void sseEmitter() throws Exception { MethodParameter type = on(TestController.class).resolveReturnType(SseEmitter.class); SseEmitter emitter = new SseEmitter(); this.handler.handleReturnValue(emitter, type, this.mavContainer, this.webRequest); assertTrue(this.request.isAsyncStarted()); assertEquals(200, this.response.getStatus()); assertEquals("text/event-stream;charset=UTF-8", this.response.getContentType()); SimpleBean bean1 = new SimpleBean(); bean1.setId(1L); bean1.setName("Joe"); SimpleBean bean2 = new SimpleBean(); bean2.setId(2L); bean2.setName("John"); emitter.send(SseEmitter.event(). comment("a test").name("update").id("1").reconnectTime(5000L).data(bean1).data(bean2)); assertEquals(":a test\n" + "event:update\n" + "id:1\n" + "retry:5000\n" + "data:{\"id\":1,\"name\":\"Joe\"}\n" + "data:{\"id\":2,\"name\":\"John\"}\n" + "\n", this.response.getContentAsString()); }
@Test public void sendEventFullWithTwoDataLinesInTheMiddle() throws Exception { this.emitter.send(event().comment("blah").data("foo").data("bar").name("test").reconnectTime(5000L).id("1")); this.handler.assertSentObjectCount(5); this.handler.assertObject(0, ":blah\ndata:", SseEmitter.TEXT_PLAIN); this.handler.assertObject(1, "foo"); this.handler.assertObject(2, "\ndata:", SseEmitter.TEXT_PLAIN); this.handler.assertObject(3, "bar"); this.handler.assertObject(4, "\nevent:test\nretry:5000\nid:1\n\n", SseEmitter.TEXT_PLAIN); }
@Test public void sendEventFull() throws Exception { this.emitter.send(event().comment("blah").name("test").reconnectTime(5000L).id("1").data("foo")); this.handler.assertSentObjectCount(3); this.handler.assertObject(0, ":blah\nevent:test\nretry:5000\nid:1\ndata:", SseEmitter.TEXT_PLAIN); this.handler.assertObject(1, "foo"); this.handler.assertObject(2, "\n\n", SseEmitter.TEXT_PLAIN); }