diff --git a/pom.xml b/pom.xml
index ac18925..dcb85de 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,6 +8,19 @@
1.0-SNAPSHOT
pom
+
+
+
+ republicate.com
+ https://republicate.com/maven2
+
+ true
+ always
+ fail
+
+
+
+
UTF-8
11
diff --git a/webapp/pom.xml b/webapp/pom.xml
index f3597dc..e4aa80b 100644
--- a/webapp/pom.xml
+++ b/webapp/pom.xml
@@ -225,6 +225,12 @@
pdfbox
2.0.28
+
+
+ com.republicate
+ jeasse-servlet3
+ 1.2
+
com.icegreen
diff --git a/webapp/src/main/kotlin/org/jeudego/pairgoth/web/sse/SSEServlet.kt b/webapp/src/main/kotlin/org/jeudego/pairgoth/web/sse/SSEServlet.kt
new file mode 100644
index 0000000..c294f1d
--- /dev/null
+++ b/webapp/src/main/kotlin/org/jeudego/pairgoth/web/sse/SSEServlet.kt
@@ -0,0 +1,21 @@
+package org.jeudego.pairgoth.web.sse
+
+import info.macias.sse.EventBroadcast
+import info.macias.sse.servlet3.ServletEventTarget
+import org.slf4j.LoggerFactory
+import javax.servlet.http.HttpServlet
+import javax.servlet.http.HttpServletRequest
+import javax.servlet.http.HttpServletResponse
+
+
+class SSEServlet: HttpServlet() {
+ companion object {
+ private val logger = LoggerFactory.getLogger("sse")
+ }
+ private val broadcast = EventBroadcast()
+
+ override fun doGet(req: HttpServletRequest, resp: HttpServletResponse?) {
+ logger.trace("<< new channel")
+ broadcast.addSubscriber(ServletEventTarget(req), req.getHeader("Last-Event-Id"))
+ }
+}
diff --git a/webapp/src/main/webapp/WEB-INF/web.xml b/webapp/src/main/webapp/WEB-INF/web.xml
index b501415..474232b 100644
--- a/webapp/src/main/webapp/WEB-INF/web.xml
+++ b/webapp/src/main/webapp/WEB-INF/web.xml
@@ -31,12 +31,22 @@
api
org.jeudego.pairgoth.web.ApiServlet
+
+ sse
+ org.jeudego.pairgoth.web.sse.SSEServlet
+ 1
+ true
+
api
/api/*
+
+ sse
+ /events/*
+