TIL

266일차(모험 175일차) - sessionStorage 삭제 2

haedal-uni 2022. 6. 8. 19:16
728x90

해당 페이지에서 서버만 재시작 하는 경우 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)

 

728x90