의문점 공부하기/💻 프로젝트 진행하며 12

💻 채팅방 중복현상(P&S)

Problem: 일반 감정채팅방과 스파링채팅방의 채팅방 중복현상 Why?: 일반 감정채팅방 입장시 최소 사진 입력값에 따른 roomIndex 값으로 입장, 이때 roomIndex 값은 1, 2, 3 스파링채팅의 roomIndex의 최초 값도 1로 설정되어있어 입장시 중복 현상 발생 Solution: 스파링채팅방의 roomIndex의 최초값을 10부터 시작하도록 코드 변경

💻 사용자 목록 새로고침 현상(P&S)

Problem: 사용자 목록은 이제 제대로 출력이 되지만 다음 사용자가 들어와도 사용자 목록이 업데이트 되지않음 Why?: 비동기방식으로 서버와의 연결을 유지하여 서버로부터 최신데이터를 받아와야 하지만 클라이언트측에서 최초 한번만 호출후 연결종료하여 유저목록이 업데이트되지 않음 Solution: 클라이언트측 호출방식 변경 후 문제해결

💻 사용자 목록 구별(P&S)

Problem: 클라이언트측에서 사용자값은 서버쪽으로 들어오지만 서버에서 다시 Map으로 저장하여 클라이언트로 반환할때 클라이어트 측에서 출력이되지 않음 Why?: 서버쪽에서 Map 형식으로 key값을 roomId로 설정하고 value값 에 다시 유저 목록을 저장 이때 저장은 되지만 클라이언트에서 사용자 목록을 호출할때 roomId값이 제대로 삽입되지 않아 사용자 Set값을 제대로 호출하지 못함 Solution: roomId값이 제대로 호출되도록 roomId호출 로직 변경

💻 메세지 구별(P&S)

Problem: 채팅할때 내가 보낸 메세지와 상대방이 보낸메세지를 구분하는 로직을 추가해도 작동하지 않음 Solution: senderd와 received로 구별한 로직을 보내는 sender, received가 아닌 ID값으로 바꿔서 received의 ID값이 내 ID와 다르면 상대측 메세지로 표시되도록 로직 변경 Why? 구분하는 로직을 sender와 received로 나눠서 나와 상대방을 구별했으나, stomp방식으로 인해 모든 메세지는received로 반환이 되어 모든 메세지가 상대방으로 표시됨

💻 로그인 이슈3(P&S)

Problem: 로그인 직후 로그인 처리가 되지 않던 이슈. 유저가 소셜로그인을 하면 redirect로 연결되는 oauth2/ 경로는 OAuth2RedirectHandler로 연결되어 토큰값을 확인하고 Login 처리가 되어야 하지만 바로 페이지에 반영되지 않던 이슈가 발생 Solution: Client의 로직. login(소셜로그인) -> handler(토큰o) -> login(로그인완료) How: OAuth2RedirectHandler에서 토큰을 확인 한 후에 window.location으로 login을 다시 시도하여 Token 값이 포함된 경우 로그인이 성공하게끔 해결

💻 로그인 이슈(P&S)

Problem : 구글 로그인 이후 카카오,네이버 developers에서 토큰을 받아오지만 토큰에서 email,name 등 칼럼값들이 추출이 안되어 로그인이 실패했던 문제가 발생 Solution : 소셜타입 마다 info를 두어서 각자에 맞는 객체형태로 받을 수 있게정제하여 받는 attributesResponse를 설 How: 카카오,네이버,구글 로그인을 provider 로 구분하여 각 타입에 맞는 service를 생성하여 db에 유저 정보를 저장

💻 프로젝트 하며 생긴 의문점,,,

오브젝트를 리턴하려면 어떻게 해야할까 요청을 통해 오브젝트를 가져올 수 있는데 응답으로 오브젝트를 리턴 할 수 있다 => 그냥 오브젝트를 리턴하면 됨 ! 뭘로? @RestController= @Controller + @ ResponseBody @controller는 @component로 스프링이 이 클래스의 오브젝트를 알아서 생성하고 다른 오브젝트들과의 의존성을 연결 @responsebody는 이 클래스의 메서드가 리턴하는것은 웹서비스의 ResponseBody하는것 = 리턴할 때 스프링은 리턴된 오브젝트를 Json의 형태로 바꾸고 HttpResponse에 담아 반환한다는것 스프링이 오브젝트를 Json으로 바꾸는 것처럼 오브젝트를 저장하거나 네트워크를 통해 전달할 수 있도록 변환하는 것을 직렬화라 하고, ..