Prepare SSE mechanism
This commit is contained in:
13
pom.xml
13
pom.xml
@@ -8,6 +8,19 @@
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<!-- CB: Temporary add my repository, while waiting for SSE Java server module author to incorporate my PR or for me to fork it -->
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>republicate.com</id>
|
||||
<url>https://republicate.com/maven2</url>
|
||||
<releases>
|
||||
<enabled>true</enabled>
|
||||
<updatePolicy>always</updatePolicy>
|
||||
<checksumPolicy>fail</checksumPolicy>
|
||||
</releases>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<maven.compiler.source>11</maven.compiler.source>
|
||||
|
@@ -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>
|
||||
|
@@ -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"))
|
||||
}
|
||||
}
|
@@ -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>
|
||||
|
Reference in New Issue
Block a user