[ Java / Socket ] 웹 소켓 서버 생성 / 접속 / 접속종료
2024. 6. 29. 12:56ㆍ· LANGUAGE/└ Java
환경 : Spring Tool Suite4
서버 생성 및 설정
- BasicWebSocketServer.java
/**
* 웹소켓 접속 및 메시지 전송을 중계하는 서버
* - 상속을 받아서 자격을 획득 (WebSocketHandler / TextWebSocketHandler / BinaryWebSocketHandler)
* - @Service 로 등록하여 사용
* - 필요한 메소드를 재정의하여 사용
* - afterConnectionEstablished : 사용자가 접속했을 때 실행되는 메소드
* - afterConnectionsClosed : 사용자가 접속을 종료했을 때 실행되는 메소드
* - handleTestMesage : 사용자가 메세지를 전송했을 때 시행되는 메소드
* */
@Slf4j
@Service
public class BasicWebSocketServer extends TextWebSocketHandler {
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
log.debug("사용자가 접속했어요");
}//재정의
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
log.debug("사용자가 접속 종료했어요");
}
}
- WebSocketServerConfiguration.java
/**
* 웹소켓과 관련된 설정을 작성하는 파일
* 이미 등록해둔 웹소켓 서버들을 가져와서 추가적인 설정을 한 뒤 활성화
* */
@EnableWebSocket//웹소켓을 사용할 것임을 표시(활성화)
@Configuration//설정파일임을 표시
public class WebSocketServerConfiguration implements WebSocketConfigurer {
@Autowired
private BasicWebSocketServer basicWebSocketServer;
@Override
public void registerWebSocketHandlers (WebSocketHandlerRegistry registry) {
//매개 변수로 주어진 registry에 웹소켓 서버를 등록
//- 반드시 웹페이지처럼 주소가 부여되어야 함
//- (중요)절대로 다른 주소와 겹치면 안된다.
registry.addHandler(basicWebSocketServer, "/ws/basic");
}
}
페이지 설정
- PageController.java
@Controller
@RequestMapping("/page")
public class PageController {
@RequestMapping("/basic")
public String basic() {
return "basic";
}
}
- basic.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>Basic 웹소켓 예제</h1>
<button class = "btn-connect">연결</button>
<button class = "btn-disconnect">종료</button>
<!-- jquery CDN -->
<script src="https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
//연결 버튼을 누르면 웹소켓 생성, 종료 버튼을 누르면 웹소켓 소멸
$(".btn-connect").click(function(){
//var socket = new WebSocket("연결주소"); //WebSocket은 기본 제공하는 기능
//최상위 객체인 window를 사용하여 어디서든 접근 가능하게 설정 //자바스크립트는 객체 확장이 가능
window.socket = new WebSocket("ws://localhost:8080/ws/basic"); //앞의 프로토콜이 ws로 다르기 때문에 주소를 다 적어주어야 한다
});
$(".btn-disconnect").click(function(){
window.socket.close();
});
});
</script>
</body>
</html>
출력 결과
- 연결 화면
- 종료 화면
- 로그 확인
728x90
'· LANGUAGE > └ Java' 카테고리의 다른 글
[ Java / Socket ] 접속자 제어 및 브로드캐스팅(그룹채팅 구현) (0) | 2024.06.29 |
---|---|
[ Java / Socket ] 서버/클라이언트 통신 및 토스트 메세지 띄워보기 (0) | 2024.06.29 |
[ Java ] 내장객체로 비.암(비밀번호 암호화 하기) (0) | 2024.06.25 |
[ Java ] MimeMessage - 이메일 전송하기 (0) | 2024.06.25 |
[ Java / Mybatis ] Mybatis 사용해보기 (0) | 2024.06.22 |