socket.io 로 채팅 기능 개발할 때 질문

조회수 2161회

안녕하세요.

node.js + express 로 웹 개발 중입니다.

이번에 socket.io 채팅 기능을 구현해보고 있습니다.

  1. localhost:8000 로 접속하면 바로 채팅방이 팝업 됩니다.
  2. 새로운 탭을 열어 localhost:8000 로 접속하여 채팅을 하면 모두에게 채팅 메시지가 전달된다

까지 개발해보았습니다.

간단히 메시지 주고 받는 부분은 이해하고 개발하였는데, 편의성 기능에 대해 질문하려고 합니다.

  1. 채팅방에서 채팅하려면 로그인해야만 사용할 수 있게 하려고 합니다. 단 다른 사람들의 메시지는 볼 수 있습니다.
  2. 여기서 다른 사람들의 메시지들이 존재할 때 로그인을 하고 나면 페이지가 새로고침 되면서 기존 메시지들이 없어지는데 유지하고 로그인만 되게 하려면 어떻게 해야하나요. ( db에 메시지를 저장해놓고 불러온다던가 같은 방법은 자원 낭비가 매우 심할 것 같은데... )**

도움 부탁드립니다! 항상 도움 주시는 분들 감사합니다.

1 답변

  • 1번에 대한 답

    메시지는 그대로 가져오되 채팅방에서 채팅을 치는 input만 제어하시면 됩니다. 지금 로그인 상태를 체크해서 로그인을 했다면 input을 활성화시키고 로그인을 안했다면 input을 없애고 로그인을 해주세요. 같은 알림으로 대치하시면 됩니다

    아니면 서버에서 메시지를 받을때 세션을 체크해서 로그인을 했다면 메시지 그대로 처리, 비로그인 유저라면 로그인을 하라고 alert를 보내는 방법도 있습니다.

    2번에 대한 답

    여러가지 방법이 생각나긴 하는데

    1. 새로고침 될때 쿠키에 저장해서 새로고침후 가져온다
    2. 데이터베이스에서 전 메시지를 가져온다
    3. 로그인을 AJAX로 만들어서 그페이지에서 처리해버린다

    쿠키로 저장에서 가져올경우 앞뒤 계산을 잘해서 넣어야 하고 로그인을 ajax로 만들어버리면 페이지 리로딩없이 그자리에서 바로 되긴합니다. 다만 역시 처리를 잘해야 해요.

    디비에서 가져오는게 그렇게 자원낭비가 심하지가 않습니다. 저도 그런생각을 많이했었는데 생각보다 디비가 잘버텨요. 거기다가 소규모사이트라면 좀 새어나가도 문제가 없습니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)