클라이언트 구성의 첫 번째 단계
<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 서비스를 호출 할 수 있습니다.