From e8cbc876b2c524f1b7d6268df46689301b858bca Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer <paul-christian.volkmer@mni.thm.de> Date: Wed, 18 Dec 2013 20:47:14 +0100 Subject: [PATCH] Added simple echo websocket handler with spring 4 --- pom.xml | 5 +++++ .../java/de/thm/arsnova/socket/EchoHandler.java | 16 ++++++++++++++++ .../de/thm/arsnova/socket/WebSocketConfig.java | 17 +++++++++++++++++ .../webapp/WEB-INF/spring/spring-websocket.xml | 13 +++++++++++++ src/main/webapp/WEB-INF/web.xml | 1 + src/test/resources/test-config.xml | 6 ++++-- 6 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 src/main/java/de/thm/arsnova/socket/EchoHandler.java create mode 100644 src/main/java/de/thm/arsnova/socket/WebSocketConfig.java create mode 100644 src/main/webapp/WEB-INF/spring/spring-websocket.xml diff --git a/pom.xml b/pom.xml index 3c8be02c..613f49cf 100644 --- a/pom.xml +++ b/pom.xml @@ -171,6 +171,11 @@ <artifactId>spring-webmvc</artifactId> <version>${org.springframework-version}</version> </dependency> + <dependency> + <groupId>org.springframework</groupId> + <artifactId>spring-websocket</artifactId> + <version>${org.springframework-version}</version> + </dependency> <!-- Security --> <dependency> <groupId>org.springframework.security</groupId> diff --git a/src/main/java/de/thm/arsnova/socket/EchoHandler.java b/src/main/java/de/thm/arsnova/socket/EchoHandler.java new file mode 100644 index 00000000..a4b08812 --- /dev/null +++ b/src/main/java/de/thm/arsnova/socket/EchoHandler.java @@ -0,0 +1,16 @@ +package de.thm.arsnova.socket; + +import org.springframework.web.socket.TextMessage; +import org.springframework.web.socket.WebSocketSession; +import org.springframework.web.socket.handler.TextWebSocketHandler; + +public class EchoHandler extends TextWebSocketHandler { + + @Override + public void handleTextMessage(WebSocketSession session, + TextMessage message) throws Exception { + + session.sendMessage(message); + } + +} diff --git a/src/main/java/de/thm/arsnova/socket/WebSocketConfig.java b/src/main/java/de/thm/arsnova/socket/WebSocketConfig.java new file mode 100644 index 00000000..3650e2be --- /dev/null +++ b/src/main/java/de/thm/arsnova/socket/WebSocketConfig.java @@ -0,0 +1,17 @@ +package de.thm.arsnova.socket; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.socket.config.annotation.EnableWebSocket; +import org.springframework.web.socket.config.annotation.WebSocketConfigurer; +import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry; + +@Configuration +@EnableWebSocket +public class WebSocketConfig implements WebSocketConfigurer { + + @Override + public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { + registry.addHandler(new EchoHandler(), "/socket/echo"); + } + +} diff --git a/src/main/webapp/WEB-INF/spring/spring-websocket.xml b/src/main/webapp/WEB-INF/spring/spring-websocket.xml new file mode 100644 index 00000000..2d86bc85 --- /dev/null +++ b/src/main/webapp/WEB-INF/spring/spring-websocket.xml @@ -0,0 +1,13 @@ +<?xml version="1.0" encoding="UTF-8"?> +<beans xmlns="http://www.springframework.org/schema/beans" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:websocket="http://www.springframework.org/schema/websocket" + xsi:schemaLocation="http://www.springframework.org/schema/websocket http://www.springframework.org/schema/websocket/spring-websocket-4.0.xsd + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> + + <websocket:handlers> + <websocket:mapping handler="echoHandler" path="/socket/echo"/> + </websocket:handlers> + + <bean id="echoHandler" class="de.thm.arsnova.socket.EchoHandler" /> +</beans> diff --git a/src/main/webapp/WEB-INF/web.xml b/src/main/webapp/WEB-INF/web.xml index 6e80f45a..79137518 100644 --- a/src/main/webapp/WEB-INF/web.xml +++ b/src/main/webapp/WEB-INF/web.xml @@ -20,6 +20,7 @@ <param-name>contextConfigLocation</param-name> <param-value> /WEB-INF/spring/arsnova-servlet.xml + /WEB-INF/spring/spring-websocket.xml </param-value> </init-param> <load-on-startup>1</load-on-startup> diff --git a/src/test/resources/test-config.xml b/src/test/resources/test-config.xml index 1b6ae97a..63c1fb14 100644 --- a/src/test/resources/test-config.xml +++ b/src/test/resources/test-config.xml @@ -2,8 +2,10 @@ <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" - xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd - http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"> + xmlns:websocket="http://www.springframework.org/schema/websocket" + xsi:schemaLocation="http://www.springframework.org/schema/websocket http://www.springframework.org/schema/websocket/spring-websocket-4.0.xsd + http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd + http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd"> <bean id="sessionService" class="de.thm.arsnova.services.SessionService"> <property name="databaseDao" ref="databaseDao" /> -- GitLab