Prepare SSE mechanism

This commit is contained in:
Claude Brisson
2023-05-14 18:45:39 +02:00
parent 8fe1be7cd1
commit c82f36c776
4 changed files with 50 additions and 0 deletions

View File

@@ -225,6 +225,12 @@
<artifactId>pdfbox</artifactId>
<version>2.0.28</version>
</dependency>
<!-- server-side events -->
<dependency>
<groupId>com.republicate</groupId>
<artifactId>jeasse-servlet3</artifactId>
<version>1.2</version>
</dependency>
<!-- test emails -->
<dependency>
<groupId>com.icegreen</groupId>

View File

@@ -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"))
}
}

View File

@@ -31,12 +31,22 @@
<servlet-name>api</servlet-name>
<servlet-class>org.jeudego.pairgoth.web.ApiServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>sse</servlet-name>
<servlet-class>org.jeudego.pairgoth.web.sse.SSEServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<!-- servlet mappings -->
<servlet-mapping>
<servlet-name>api</servlet-name>
<url-pattern>/api/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>sse</servlet-name>
<url-pattern>/events/*</url-pattern>
</servlet-mapping>
<!-- context params -->
<context-param>