오늘은 채팅방 개별 회원 관리에 대하 기획해보려한다.
채팅방 개별 회원 관리란 소켓을 이용해 사용자 끼리 실시간 통신이 가능하게 연결된 곳에서 A, B 가있을때 A는 정상적으로 사용하게 하고 B는 소켓 연결을 해제 시켜 사용을 불가능에 하는 것을 생각한 것이다.
현재 진행 중인 할래? 프로젝트에서 채팅방 방장 사용자가 다른 사용자들을 강퇴하는 기능을 구현 중에 있다.
사용자들이 속한 테이블에서 지정한 사용자의 데이터를 삭제하는 것으로 간단하게 구현 할 수 있지만 테이블에서 데이터를 삭제 했지만 소켓의 연결을 나두면 방을 나가지 않는이상 소켓의 연결은 해제되지 않을 것이라 생각하기 때문이다.
하여 관련된 지식을 검색하던 중 소켓을 연결하면 연결된 사용자 마다 가지고 있는 세션값이 클라이언트 헤더에 저장되는 것 같다.
이 세션을 활용해 실시간으로 개별사용자의 소켓을 해제하는 것이 가능한지 적용해보려 한다.
우선 클라이언트의 세션 값을 서버에서 불러오는 코드는 다음과 같다.
위와 같은 코드로 클라이언트에 현재 저장된 세션값을 가져올 수 있으며 이 데이터를 테이블에 저장한후 소켓이 해제되면 삭제 해주는 등의 구현으로 사용해 볼 수 있을 것 같다.
현재는 추측에 있으며 여러 정보를 더 모은후 구현에 들어 가려한다.
최후의 방법으로는 사용자가 채팅을 입력할 때 사용자가 속한 테이블의 데이터를 조회해 해당 사용자가 채팅방에 속한게 아니라면 해당 채팅방에 속하지 않습니다 라는 경고창과 함께 홈화면으로 이동 시키는 방법이 있을것 같다.