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/* +