WebSoket의 간단한 사용

클라이언트 구성의 첫 번째 단계

<script>
     var에 웹 소켓,
     IF ( '는 웹 소켓' 에서 창) { 
        웹 소켓 = 새로운 새로운 웹 소켓 ( 'WS : //127.0.0.1 : 8080 / 웹 소켓'); // 구성 서버 주소 웹 소켓 
    } 다른 { 
        경고 ( "당신의 "브라우저는 다른 브라우저 시도 교체, 웹 소켓을 지원하지 않습니다 ) 
    } 

    websocket.onopen = 기능 (이벤트) { 
        을 console.log ( " "연결 설정 ); 
    }; 
    websocket.onclose = 기능 (이벤트) { 
        콘솔. (로그인 "밀접한 관계를" );  
    };
    웹 소켓을.의 onMessage = 기능 (이벤트) { 
        을 console.log ( "메시지가 수신 될 때,"+ event.data);
         // 대중 음악 프롬프트 및 프롬프트 재생 
        var에 MSG = 하며 event.data를
         IF 스파이크가 "=== (MSG를 끝 " ) { 
            $ ( '# seckill 박스') HTML (."스파이크 끝 " ); 
        } 
    }; 
    websocket.onerror = 기능 (이벤트) { 
        을 console.log ( "웹 소켓 이상 " ); 
    } 
    / * * 
     * 다음 readyState의 상태이다 : 
     ; * 접속 0의 값을, 상기 연결 것을 나타내는 
     1 개 값, 성공적인 연결을 나타내고, 상기 통신 수 다음 열기 
     마감 : 값 도 2는 폐쇄 연결을 나타낸다 
     폐쇄 : 3의 값은, 연결이 종료되었음을 나타내는, 또는 연결이 실패 연다. 
     * / 

    // (개방 상태시 전송되어야한다) 메시지를 서버로 전송할 
    IF(websocket.readyState === 1. ) { 
        websocket.send ( "서버 안녕하세요 ' ); 
    }

 </ script>

서버 구성의 두 번째 단계

@Configuration
 공공  클래스 WebSocketConfig { 

    @Bean 
    공공 ServerEndpointExporter의 serverEndpointExporter () {
         반환  ) (ServerEndpointExporter을; 
    } 

}
@ServerEndpoint ( "/ 웹 소켓" ) 
@Component 
@ SLF4J 
공공  클래스 WebSocketService { 

    / ** 
     * 연결 웹 소켓의 현재 수를 기록 (thread에 대해서 안전한) 
     * / 
    개인  정적 LongAdder connectAccount = 새로운 새로운 LongAdder (); 

    / ** 
     * 각 스토리지 (스레드 안전 요구)가 클라이언트 오브젝트에 대응 websocketServer 
     * / 
    개인  정적 CopyOnWriteArraySet <WebSocketService> = webSocketSet 새로운 새 CopyOnWriteArraySet <> ();
     / ** 
     * 클라이언트 연결 개체 
     * / 
    개인 세션 세션; 

    / ** 
     * 연결 성공 방법은 호출 
     * @param 세션을
     * / 
    @OnOpen 
    공개  공극 으로 onOpen (세션 세션) {
         이 본 .session = 세션; 
        webSocketSet.add ( 이 본 ) 
        connectAccount.increment (); 
        log.info ( "새로운 액세스 접속, 현재 접속 번호 {}" , connectAccount) 
    } 

    / ** 
     * 호 접속이 폐쇄 될 때 
     * / 
    @OnClose 
    공개  공극 으로 onClose () { 
        webSocketSet.remove ( 이 본 ) 
        connectAccount.decrement (); 
        log.info ( "밀접한 현재 접속 번호 { } " , connectAccount); 
    } 

    / ** 
     * 클라이언트 메시지를 수신 할 때 호출
     * 파라미터 : 메시지
      * / 
    @OnMessage 
    공공  무효 의 onMessage (문자열 메시지) { 
        log.info는 ( - "> {} 클라이언트, 메시지 전송 된 메시지 수신" ;, 메시지) 
    } 

    / ** 
     클라이언트에 * 서버 전송 메시지 
     * @param의 메시지
      * / 
    공용  공극 및 SendMessage (문자열 메시지) {
         (WebSocketService webSocketService : webSocketSet) {
             은 try { 
                log.info ( "[] 웹 소켓 메시지 방송 메시지, 메시지 = {}" 메시지) 
                webSocketService.session . .getBasicRemote () sendText (메시지) ;
            } 캐치 (IOException이 전자) { 
                log.info (  "오류 메시지가} {클라이언트로 전송됩니다", e.getMessage ()); 
            } 
        } 
    } 

}

당신이 푸시 메시지를 필요로하는 곳에 그런 다음 WebSocketService 서비스를 호출 할 수 있습니다.

추천

출처www.cnblogs.com/panbingqi/p/11357069.html