참고한 블로그 >> [ WebSocket으로 실시간 채팅 구현하기.(springboot) ]
Handshake failed due to invalid Upgrade header: null
알고보니 /websocket으로 입력하는게 아니라 /chat으로 입력하는 것이었다.ㅎ
위와 같이 test 해보다가 새로고침을 했더니 아래와 같은 에러가 발생했다.
The WebSocket session [0] has been closed and no method (apart from close())
may be called on a closed session
구글링 해보니 아래와 같은 코드가 적혀있길래 가져와서 OnClose 부분을 사용했다.
( 연결이 끊어졌을 때 )
@OnMessage
public String onMessage(String message, Session session) throws DeploymentException, IOException {
switch (message) {
case "quit":
//session.close(new CloseReason(CloseCodes.NORMAL_CLOSURE, "Game ended"));
message = "you" + message;
break;
}
return message;
}
@OnClose
public void onClose(Session session, CloseReason closeReason) {
logger.info(String.format("Session %s closed because of %s", session.getId(), closeReason));
}
https://stackoverflow.com/questions/26558373/how-to-close-java-ee-websocket-connection-properly
채팅 사용자 구분이 지금은 내가 아니면 무조건 관리자로 되어있는데
로그인 한 닉네임을 받아서 변경하려고 한다.
참고할 블로그가 있어서 그 부분을 보고 하면 될 것 같다. (단체 채팅 포함)
그리고 코드를 조금씩 바꾸고 있는데 코드를 가져오는 과정에서
블로그에 생략 된 코드나 내가 원하는 방향으로 고치기 위해서 이것 저것 바꾸고 있는데
참고하고 있는 블로그 글은 아래와 같다.
[ 스프링 Spring + 웹소켓 WebSocket 채팅 초간단 구현 ]
아직 뭐가 뭔지 잘 몰라서 코드를 뜯어보고 있는데 그래도 진행이 되고 있는 것 같아서 뿌듯하다. 😁
아래는 뻘짓하다가 에러를 발견해서 수정했었는데 알고보니 다른 에러 때문에 생긴 오류라서
안고쳐도 되었다. 😂
When allowCredentials is true, allowedOrigins cannot contain the special value "*"
since that cannot be set on the "Access-Control-Allow-Origin" response header. To allow credentials to a set of origins, list them explicitly or consider using
"allowedOriginPatterns" instead.
registry.addEndpoint("/").setAllowedOrigins("*").withSockJS();
⬇️ 아래 코드로 변경
registry.addEndpoint("/").setAllowedOriginPatterns("*").withSockJS();
'Project' 카테고리의 다른 글
3차 프로젝트 gif (0) | 2022.03.28 |
---|---|
프로젝트 관련 정리글 링크 첨부 (0) | 2022.03.27 |
페이징 코드 정리 (0) | 2022.03.23 |
3차 프로젝트_KPT 회고 (0) | 2021.12.13 |
3차 프로젝트_기획안 수정 (0) | 2021.11.22 |