본문 바로가기
728x90
반응형

유저3

14. 유저 세션(3) 6-2. 구현하기 유저가 로그인을 성공하면 유저 세션 역할을 하는 프로세스를 생성할 것이다. 점수를 저장하는 API는 핸들러에서 처리시 해당 세션 프로세스에게 메시지를 전달해서 결과값을 받아 오도록 한다. 6-2-1. 유저 세션 프로세스 생성 mon_users 모듈에 new_session/1, loop/1, make_session_key/2 함수를 만든다. 프로세스 생성 부분만 만들고, 나머지는 함수 껍데기만 작성하겠다. %% API -export([join/2, login/2]). join(Id, Password) -> F = fun() -> case mnesia:read(users, Id) of [] -> %% 해당 Id로 가입된 데이터가 없으면 저장한다 Users = #users{id=Id, pas.. 2018. 1. 18.
13. 유저 세션(2) 프로세스를 스스로 종료되도록 하려면 몇 가지 방법들이 있다. 물론 exit(Pid,kill)함수를 사용해도 되겠지만 프로세스 스스로 종료되도록 하는 것이 낫다. stop 메시지를 받으면 종료되도록 하는 방법 receive {Pid,Message} -> Pid ! Message; stop -> true end 5초 동안 아무런 메시지를 못 받으면 바로 종료되도록 하는 방법 receive {Pid,Message} -> Pid ! Message; after 5000 -> true end timer를 등록해서 몇초 후에 스스로에게 stop 메시지를 보내도록 해도 된다. erlang:send_after(Time, Dest, Msg) -> TimerRef. 예로 5초 후에 자기 자신에게 stop 메시지를 보내는 코.. 2018. 1. 15.
12. 유저 세션(1) 6-1. 유저 세션 서버에서 세션은 유저가 접속한 이후에 로그인된 상태에 지속적으로 관리하기 위해 필요하다. 모바일에서는 로그인과 다르게 로그아웃은 서버에서 자동으로 관리해줘야 한다. 로그인에 성공한 유저의 세션을 만들고, 해당 유저가 특정한 시간 동안 아무런 행동을 하지 않는다면 자동으로 세션을 종료해서 로그아웃 되도록 하는 기능이 필요하다. 사용자의 행동과 서비스에 맞는 적절한 시간을 이용해서 세션의 만료를 판단해야 한다. 얼랭 프로세스를 이용해서 유저의 세션을 만들 거다. 유저의 세션이라고 하는 것은 접속한 유저마다 독립적으로 하나씩 필요한 것이고, 이것에 가장 잘 부합되는 것이 얼랭의 프로세스이다. 6-1-1. 얼랭 프로세스 얼랭에서의 프로세스라고 하는 것은 OS의 프로세스를 생각하면 안 된다. .. 2018. 1. 15.
728x90
반응형