해당 페이지에서 서버만 재시작 하는 경우 sessionStorage 에 저장되어 있었다.
sessionStorage 저장하고 값을 보여주는 사이트가 index.html인데
로그인 후에 바로 다른 사이트로 넘어갈 경우 기존 sessionStorage 닉네임 값으로 저장된다.
그래서 로그인할 때 sessionStorage를 삭제하는 코드를 작성했었다.
265일차(모험 174일차) - sessionStorage 삭제
그러다보니 로그인 후에 다른 사이트로 넘어가면 sessionStorage에 저장이 되지않아
채팅 페이지가 띄워지는 동시에 띄워지는 알림은 null값이 띄워졌다.
(이후에 띄워지는 채팅 메세지에서의 닉네임 값은 잘 띄워졌다.)
null값이 띄워지지 않게 하기 위해 서버에서 세션을 저장하여 그 값을 가져오기로 했다.
(백 코드는 이 전 글)
로그인 페이지
function findSession() {
if (sessionStorage.getItem("nickname")) {
sessionStorage.removeItem("nickname");
}
$.ajax({
type: "GET",
url: `http://localhost:8080/user/login/nickname`,
contentType: "application/json",
data: JSON.stringify(),
success: function (response) {
sessionStorage.setItem("nickname", response)
}
})
}
채팅 페이지에서도 동일하게 작성했다.
$(document).ready(function () {
findSession()
});
function findSession() { // 값이 저장되지 않는 경우 서버에서 session 저장 된 값 가져오기
if (!sessionStorage.getItem("nickname")) {
$.ajax({
type : "GET",
url: `http://localhost:8080/user/login/nickname`,
contentType : "application/json",
data: JSON.stringify(),
success: function (response) {
sessionStorage.setItem("nickname", response)
username = sessionStorage.getItem("nickname");
}
})
}}
1초마다 확인하기
위 코드를 작성하기 전에 session에 먼저 저장을 하고 그 뒤에 값을 가져올 수는 없을까 생각하다가
일정시간 이후에 특정 코드 혹은 함수를 의도적으로 실행하고 싶을 때 사용하는 함수인
setTimeout()을 생각하게 되었고 이전에 접속자 수를 메세지 보낼 때마다 인원수를 체크했었는데
이제는 setInterval()을 통해서 1초마다 변경을 확인 할 수 있다.
출처 : [JavaScript] 시간 지연 함수, 일정 시간 뒤 실행시키기, SetTimeout() {}
기존 코드
function sendMsg() { // 전송버튼을 누를 때 실행되는 함수
// 코드 생략
count_user()
}
⬇️
setInterval(function (){
count_user()
},1000)
'TIL' 카테고리의 다른 글
268일차(모험 177일차) - 회원가입 실시간 중복 체크하기 2 (0) | 2022.06.10 |
---|---|
267일차(모험 176일차) - 회원가입 실시간 중복 체크하기 (0) | 2022.06.09 |
265일차(모험 174일차) - sessionStorage 삭제 (0) | 2022.06.07 |
264일차(모험 173일차) - 입력 감지하기 (0) | 2022.06.06 |
261일차(모험 170일차) - 상대방과 나 구분하기 (0) | 2022.06.03 |