1 package org
.asamk
.signal
.http
;
3 import java
.io
.BufferedWriter
;
4 import java
.io
.IOException
;
5 import java
.io
.OutputStream
;
6 import java
.io
.OutputStreamWriter
;
7 import java
.nio
.charset
.StandardCharsets
;
11 * This class send Server-sent events payload to an OutputStream.
12 * See <a href="https://html.spec.whatwg.org/multipage/server-sent-events.html">spec</a>
14 public class ServerSentEventSender
{
16 private final BufferedWriter writer
;
18 public ServerSentEventSender(final OutputStream outputStream
) {
19 this.writer
= new BufferedWriter(new OutputStreamWriter(outputStream
, StandardCharsets
.UTF_8
));
24 * @param event Event type
25 * @param data Event data, each entry must not contain newline chars.
27 public synchronized void sendEvent(String id
, String event
, List
<String
> data
) throws IOException
{
34 writer
.write("event:");
39 writer
.write("data\n");
41 for (final var d
: data
) {
42 writer
.write("data:");
51 public synchronized void sendKeepAlive() throws IOException
{