웹소켓을 구현하긴 했다.
문제는 진짜 구현하기만 했다..
현재 나는 HttpSession을 통하여 로그인한 사용자의 정보를 받고 있다. 하지만, HttpSession과 WebSocketSession은 다르기 때문에, HttpSession의 정보를 WebSocketSession으로 바꿔줘야한다. 위 코드가 이 과정을 위한 코드이다.
웹소켓을 Bean에 등록하는 것을 보여준다.
위 코드에서 afterConnetionEstablished는 아까 HttpHandshakeInterceptor에서 HttpSession으로 변환해주는 역할을 한다.
따라서 httpSession이 존재하면, Logged-in member 문장을 반환한다.
handleTextMessage는 어떤 메세지를 보낼 것인지를 나타낸다.
서버 연결이 끊기거나, 닫혔을 때의 메시지를 보내준다.
여기서 문제!
잘 하는 친구들에게 물어보니, HttpSession을 사용했을 때와, Token을 사용했을 때의 WebSocketSeesion은 아예 다르다고 한다..
얼른 로그인이 구현되면 Token으로 고쳐야 될텐데 걱정이다.
아 그리고, 여태 html을 사용해서 백엔드가 잘 작동되는지를 확인했었는데, 이제 postman을 사용하여 post을 사용한다.
확실히 html을 안 만들고 백엔드에만 집중할 수 있어서 좋은 것 같다.
이 과정에서도 굉장히 오래 걸렸다.
우선 @RestController와 @Controller의 차이다. 나는 @Controller로 모두 사용했었는데,postman에서 자꾸 오류가 발생했었다.
왜냐하면 @Controller는 HTTP 요청을 처리하고, HTML을 반환하기 위해 사용되는 것이고, @RestController는 JSON,XML 또는 기타 데이터 형식을 반환하는 RESTful 웹 서비스의 컨트롤러를 작성할 때 사용되는 차이점이 있었다.
어쩐지 계속 return 경로를 html로 하라고 오류가 발생하더니.. 절대 안 까먹을 것 같다.
또한,PostMapping에서 DTO를 사용할 때, @RequestBody를 사용해야 된다는 것을 알았다. 왜냐하면 @RequestBody가 HTTP 요청의 본문을 자바 객체로 변환해주는 역할을 하기 때문이다. 주로 POST 또는 PUT 요청에서 요청 본분에 포함된 데이터를 자바 객체로 매핑할 때 사용된다고 한다.
아직 갈 길이 멀다. 하지만 계속 성장하고 있다.
제안서 및 프로젝트 종료 (1) | 2024.07.02 |
---|---|
웹소켓 Token 사용 및 API 명세서 및 postman 문제 (0) | 2024.06.02 |
진행상황 - 웹소켓 (0) | 2024.05.17 |
그룹 조회 및 그룹 탈퇴 및 그룹 삭제 - 코드병합 문제 (0) | 2024.04.13 |
파일 업로드 및 그룹 생성 및 그룹 참가 (1) | 2024.03.29 |