Prepare SSE mechanism
This commit is contained in:
13
pom.xml
13
pom.xml
@@ -8,6 +8,19 @@
|
|||||||
<version>1.0-SNAPSHOT</version>
|
<version>1.0-SNAPSHOT</version>
|
||||||
<packaging>pom</packaging>
|
<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>
|
<properties>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<maven.compiler.source>11</maven.compiler.source>
|
<maven.compiler.source>11</maven.compiler.source>
|
||||||
|
@@ -225,6 +225,12 @@
|
|||||||
<artifactId>pdfbox</artifactId>
|
<artifactId>pdfbox</artifactId>
|
||||||
<version>2.0.28</version>
|
<version>2.0.28</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!-- server-side events -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.republicate</groupId>
|
||||||
|
<artifactId>jeasse-servlet3</artifactId>
|
||||||
|
<version>1.2</version>
|
||||||
|
</dependency>
|
||||||
<!-- test emails -->
|
<!-- test emails -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.icegreen</groupId>
|
<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-name>api</servlet-name>
|
||||||
<servlet-class>org.jeudego.pairgoth.web.ApiServlet</servlet-class>
|
<servlet-class>org.jeudego.pairgoth.web.ApiServlet</servlet-class>
|
||||||
</servlet>
|
</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 mappings -->
|
||||||
<servlet-mapping>
|
<servlet-mapping>
|
||||||
<servlet-name>api</servlet-name>
|
<servlet-name>api</servlet-name>
|
||||||
<url-pattern>/api/*</url-pattern>
|
<url-pattern>/api/*</url-pattern>
|
||||||
</servlet-mapping>
|
</servlet-mapping>
|
||||||
|
<servlet-mapping>
|
||||||
|
<servlet-name>sse</servlet-name>
|
||||||
|
<url-pattern>/events/*</url-pattern>
|
||||||
|
</servlet-mapping>
|
||||||
|
|
||||||
<!-- context params -->
|
<!-- context params -->
|
||||||
<context-param>
|
<context-param>
|
||||||
|
Reference in New Issue
Block a user