Class GlueAbstractWebSocketHandler
java.lang.Object
org.springframework.web.socket.handler.AbstractWebSocketHandler
com.poscoict.glueframework.websocket.GlueAbstractWebSocketHandler
- All Implemented Interfaces:
DisposableBean
,InitializingBean
,WebSocketHandler
- Direct Known Subclasses:
GlueSimpleWebSocketHandler
public class GlueAbstractWebSocketHandler
extends AbstractWebSocketHandler
implements InitializingBean, DisposableBean
Direct Message handling 기능을 포함한 WebSocket abstract handler class.
Direct Message란
WebSocket 서버(handler)에 client로 접속하지 않고도 다른 client들에게 message를 보낼 수 있는 interface. GlueActivity나 다른 bean에서 WebSocket 접속 없이도 바로 호출하여 message를 client들에게 송수신할 수 있음. |
GlueWebSocketDirectSender 를 implements 한 Direct Sender class들
dispatcher-socket-servlet.xml 로딩 시에 읽어 들여 list로 갖고 있으며
등록된 direct sender 모두에게 message를 보내는 method를 가지고 있다.
이 class를 extends 하고 handleDirectMessage method를 overriding 하여 message 처리 부분을 구체화 하는 용도로 사용한다.
Glue Framework은 Text message를 간단히 재전송하는 class인 GlueSimpleWebSocketHandler를 제공하며,
이 class를 extends 하는 class등은 동일한 방법으로 사용하면 된다.
Properties
- directSenderOnStartup : Bean 생성 시 등록할 DirectSender 의 bean id 들. Comma로 구분하여 여러 개를 정의할 수 있다.
사용 예
1) CustomHandler extends GlueAbstractWebSocketHandler 를 생성하여
2) dispatcher-socket-servlet.xml 에 정의
<websocket:handlers>
<websocket:mapping path="/sample.socket" handler="CustomHandler"/>
</websocket:handlers>
<bean id="CustomHandler" class="com.xxx.CustomHandler">
<property name="directSenderOnStartup" value="CustomDirectSender1,CustomDirectSender2"/>
</bean>
3) Handler의 속성은 spring에서 정의하는 방식에 따라 dispatcher-socket-servlet.xml 에 정의한다.
<bean class="org.springframework.web.socket.server.standard.ServletServerContainerFactoryBean">
<property name="maxTextMessageBufferSize" value="10000"/>
<property name="maxSessionIdleTimeout" value="30000"/>
</bean>
-maxTextMessageBufferSize : socket 송수신 최대 buffer size (단위:byte), 최대 크기를 넘어가는 message가 전송될 경우 socket 연결이 끊기게 된다.
-maxSessionIdleTimeout : socket 연결 중 이 시간 동안 데이터 전송이 없으면 연결이 끊기게 된다.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
afterConnectionClosed
(WebSocketSession session, CloseStatus status) void
void
void
destroy()
void
handleDirectMessage
(String senderInfo, byte[] txtMessage) void
handleDirectMessage
(String senderInfo, WebSocketMessage<?> message) void
handleTransportError
(WebSocketSession session, Throwable exception) void
registerDirectSender
(String senderId, GlueWebSocketDirectSender senderBean) Direct Sender를 direct message를 받는 대상이 되도록 등록한다.void
sendMsgToAllDirectSenders
(String txtMsg) void
setDirectSenderOnStartup
(String directSenderListStr) 로딩 시에 bean의 properties에 정의된 direct sender를 넘겨 받는다boolean
void
unregisterDirectSender
(String senderId) Direct Sender를 direct message를 받는 대상에서 삭제한다.Methods inherited from class org.springframework.web.socket.handler.AbstractWebSocketHandler
handleBinaryMessage, handleMessage, handlePongMessage, handleTextMessage
-
Constructor Details
-
GlueAbstractWebSocketHandler
public GlueAbstractWebSocketHandler()
-
-
Method Details
-
handleDirectMessage
- Throws:
Exception
-
handleDirectMessage
- Throws:
Exception
-
sendMsgToAllDirectSenders
- Parameters:
txtMsg
- WebSocket을 통해 client들에게 전송하려는 text형 message
-
afterConnectionClosed
- Specified by:
afterConnectionClosed
in interfaceWebSocketHandler
- Overrides:
afterConnectionClosed
in classAbstractWebSocketHandler
- Throws:
Exception
-
afterConnectionEstablished
- Specified by:
afterConnectionEstablished
in interfaceWebSocketHandler
- Overrides:
afterConnectionEstablished
in classAbstractWebSocketHandler
- Throws:
Exception
-
handleTransportError
- Specified by:
handleTransportError
in interfaceWebSocketHandler
- Overrides:
handleTransportError
in classAbstractWebSocketHandler
- Throws:
Exception
-
supportsPartialMessages
public boolean supportsPartialMessages()- Specified by:
supportsPartialMessages
in interfaceWebSocketHandler
- Overrides:
supportsPartialMessages
in classAbstractWebSocketHandler
-
destroy
- Specified by:
destroy
in interfaceDisposableBean
- Throws:
Exception
-
afterPropertiesSet
- Specified by:
afterPropertiesSet
in interfaceInitializingBean
- Throws:
Exception
-
setDirectSenderOnStartup
로딩 시에 bean의 properties에 정의된 direct sender를 넘겨 받는다- Parameters:
directSenderListStr
- handler bean 의 properties로 정의된 direct sender id들 (comma로 구분된 상태)
-
registerDirectSender
Direct Sender를 direct message를 받는 대상이 되도록 등록한다.- Parameters:
senderId
- - applicationContext에 정의된 Direct Sender bean id
-
unregisterDirectSender
Direct Sender를 direct message를 받는 대상에서 삭제한다.- Parameters:
senderId
- applicationContext에 정의된 Direct Sender bean id
-