1. Pom.xml 추가
<!-- websocket -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
<version>5.2.1.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.1</version>
<scope>provided</scope>
</dependency>
2. Web.xml 설정
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/servlet-context.xml
/WEB-INF/spring/aop-context.xml
</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
Web.xml에서는 비동기를 위한 로직인 <async-supported>true</async-supported>를 추가합니다. 비동기식으로 처리하는 이유는 2개 이상의 클라이언트가 동시에 데이터를 주고받을 경우 에러가 나지 않도록 하기 위함입니다. 만약 동기식으로 처리한다면 1:1 통신에서는 상관이 없지만 다수의 클라이언트를 대상으로 하면 에러가 발생합니다.
3. Servlet-context.xml 설정
<!-- WebSocket -->
<beans:bean id="webSocketHandler" class="com.vote.common.websocket.WebSocketHandler" />
<websocket:handlers>
<websocket:mapping handler="replyEchochoHandler" path="/replyEcho"/>
<websocket:handshake-interceptors>
<beans:bean class="org.springframework.web.socket.server.support.HttpSessionHandshakeInterceptor"/>
</websocket:handshake-interceptors>
</websocket:handlers>
Servlet-context.xml 설정입니다.
<beans:bean id="webSocketHandler" class="com.vote.common.websocket.WebSocketHandler" />
이 부분은 아래에서 직접 webSocket을 조작하는 자바클래스파일을 직접 만들거기 때문에 class의 경로는 생성할 자바클래스파일의 경로를 적으면 됩니다. 자바파일은 아래에서 만들겠습니다.
<websocket:handlers>
<websocket:mapping handler="replyEchochoHandler" path="/replyEcho"/>
<websocket:handshake-interceptors>
<beans:bean class="org.springframework.web.socket.server.support.HttpSessionHandshakeInterceptor"/>
</websocket:handshake-interceptors>
</websocket:handlers>
이 부분은 핸드쉐이크를 하는 인터셉터를 추가하는 부분입니다. 보통의 경우에는 필요가 없지만 여기서는 사용자의 Session을 가져와서 사용해야 하기 때문에 추가를 했습니다. 만약 웹소켓 사용시 Session에 대한정보가 필요없다면 빼주셔도 괜찮습니다.
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.1</version>
<scope>provided</scope>
</dependency>
만약 한대쉐이크 핸들러가 필요없다면 pom.xml에서 이 부분도 제외해주셔도 괜찮습니다.
'JAVA > Java - Spring' 카테고리의 다른 글
[Java - Spring] Web.xml 에서 welcome-file-list 설정하기 (0) | 2019.11.07 |
---|---|
[Java - Spring] Jackson을 이용한 JSON 사용방법 (0) | 2019.10.27 |
[Java-Spring] 로그인 Seesion 처리 (1) | 2019.10.20 |
댓글