서버 데이터 저장관련 문의

안녕하세요.
현재 프로젝트가 오픈중인데 3분마다 주기적으로 저장을 하고있는 상황입니다.
그런데 전날에 켜놓고 다음날 재접해서 확인하였더니 데이터가 롤백이 되었다는 이슈가 종종
발생하고 있는 상황입니다.
궁금한 부분은 우선 서버가 접속이 끊긴 상태에서는 Backend.AsyncPoll(); 이부분에서 NullReferenceException 에러가 뜬 후 진행은 계속 되고 서버가 다시 연결된 이후에는 서버 통신이 작동하지 않는것으로 보이는데 이 부분을어떤식으로 처리해야할지와, 로그를 남기는 부분에 있어서 어떤로그는 남겨지는데 어떤건 아예 하루치가 남아있지 않는 경우가 있는데 이런상황이 어떨때 생기는 것인지 궁금합니다.

프로젝트명 : 킹덤RPG : 영웅키우기
뒤끝SDK 버전 : 5.4.1

안녕하세요 개발자님

Backend.AsyncPoll() 함수의 경우

서버에 응답을 받은 후 비동기 함수의 콜백 함수를 실행시키는 함수로,

해당 함수에서 NullReferenceException 이 발생한다면,

등록한 콜백 함수에서 NullReferenceException 이 발생하신 것 입니다.

해당 부분은 콜백 함수에서 NullReferenceException 이 발생하는 부분이 있는지 확인 부탁드립니다.


서버가 다시 연결된 이후라는 것이 NullReferenceException 이 발생한 요청 다음에 보낸 요청은 성공했다는 의미가 맞으실까요?

우선 데이터 저장의 경우 비동기 서버에 요청을 보내는 것 이기에,

연결이 끊어지는 개념이 존재하지 않고 요청이 성공/실패하는 것만 존재합니다.

말씀하신 부분을 종합적으로 보았을 때

요청이 실패한 경우 NullReferenceException 이 발생하고, 그 다음 요청은 성공한 것으로 보이는데요,

요청이 실패한 경우에는 동일한 요청을 다시 한번 서버로 요청하고,

개발자님이 정한 횟수 (ex 3번) 이상 계속 실패를 한다면 게임을 종료하거나 게임을 메인화면으로 이동시키는 등의 로직이 필요합니다.


로그의 경우에도 동일합니다.

다만 하루치가 보이지 않는다는 것은 로그를 저장하는 요청을 남기지 않았거나

혹은

잘못된 요청을 보내거나 엑세스토큰이 만료된 경우 로그가 저장되지 않을 수 있습니다.


마지막으로

한번 로그인 된 계정의 엑세스토큰은 24시간 동안만 유효하며

그 시간이 지나면 엑세스 토큰이 만료되어 모든 요청은 실패하게 됩니다.

그렇기에 방치형 게임으로 계속 게임을 켜놓는 구조시라면

주기적으로 토큰을 갱신하여 엑세스토큰을 유효하게 만들어야 합니다.

엑세스토큰 관련해서는 아래 개발자문서를 참고해주세요.

답글 주셔서 감사합니다.
갱신 관련해서 궁금한점이, 저희가 테스트하면서 플레이중에 토큰 갱신을 시도했는데
그 후에 나오는 에러가 잘못된 토큰 이라는 에러가 나와서
현재 저희 쪽에서는 401 에러가 떴을때 토큰 조회를 하고
토큰이 만료되었을 겨우 갱신하는 방법을 사용하였습니다.
그러나 주신 답을 보면 만료가 되기 전에 갱신을 하라고 하신것으로 이해가 되는데
이 부분은 어떻게 처리해야 할지 궁금하네요…

아… 제가 이상하게 만들어놨었네요…
갱신 잘 됩니다 감사합니다!

좋아요 1