socket.io로 구현한 채팅에 대하여 질문이 있습니다.

조회수 1709회

현재 대부분의 메신저 기능은 완성을 하였는데, 문제가 되고있는게 채팅방 리스트를 뿌려주면서 가장 최근의 대화를 같이 가져오고 있습니다. (ex. 카톡)

문제는 채팅방에서 누군가가 메시지를 보내면 최근에 받은 메시지를 갱신해서 리스트에 다시 표기를 해 주어야 하는데 그러기 위하여

            setInterval(function() {
                socket.emit('rooms', id);
            }, 1000);

이와 같은 형태로 계속 방의 리스트를 불러와야 하는걸까요...? 그렇다면 보여지는 리스트도 계속 깜빡거릴테고 서버에 부담도 가게될거같은데......

어찌해야할까요?

1 답변

  • 글쎄요,
    해당 소스코드가 클라이언트 부분이겠죠.

    클라이언트에서 socket.on 으로 서버 이벤트를 받을 때만 처리하면 되는 문제로 보여집니다.

    서버에서 새로운 메세지가 수신 될 경우만 정보를 가져와서 다시 보여주면 되겠죠. 지금 처럼 interval이 아니구요.

    • 그 유저에게 메시지가 수신되는게 아니라 방에 로그를 남기는격이라 클라이언트는 socket.on으로 이벤트를 받지 않습니다. KimTaesik 2016.6.22 18:48
    • (클라이언트에서) 방의 리스트를 불러오는것이 특정 이벤트(방의 리스트 중에서 새로운 메세지가 있을 경우)가 발생했을 때만 가져오면 되는거죠? 그러니깐 방의 리스트 중에서 새로운 메세지가 있을 경우...? 그렇다면 이 이벤트가 발생 했을 때 해당 되는 유저들에게 특정 이벤트를 전달해서 방의 정보를 갱신하라고 서버에서 요청하면 클라에서 방의 정보를 가져오는 방식이 안된다는 말씀이신건가요? 구조를 잘 몰라서 다소 엉뚱한 답변일수도 있겠네요. Manki Kim 2016.6.22 18:56

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

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

(ಠ_ಠ)
(ಠ‿ಠ)