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 연결 중 이 시간 동안 데이터 전송이 없으면 연결이 끊기게 된다.