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


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

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

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

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

어찌해야할까요?

  • 2016년 06월 22일에 작성됨
    AWS, node.js, socket.io, mongoDB

조회수 207


1 답변


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

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

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

  • 2016년 06월 22일에 작성됨

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

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close