node.js와 socket.io를 사용하여 web messenger를 구현하고있습니다.


이번에 처음 node.js와 socket.io를 접하고 공부하면서 구현해보고있는 초보입니다.

간단한 채팅이라면야 자료가 수두룩한데 깊이 들어갈수록 뭔가 찾기 힘들어지네요.

제가 생각을 한 것은 가입할때 닉네임(?)을 작성하고, 그 닉네임을 namespace로 두고 그 안에 Email로 room을 생성하는것을 생각하고 있습니다.

test1 = { '방1' , '방2', '방3' ..... }, test2 = { '방1' , '방2', '방3' ..... }

이런식으로 구현하는걸 생각하고 있습니다.

1이 2에게 대화를 건다면, 우선 2의 네임스페이스로 가서 방 정보를 가져와 내 이메일로된 방이 있는지 체크를 해서 방이 있으면 그대로 join하고 존재하지 않으면 1의 네임스페이스에다가 2의 이메일로 된 방을 생성하는걸 생각해 보았습니다.

그런데 이게 정상적이고 효율적인 방법인지도 모르겠고... 어느정도 가이드가 있으면 좋겠는데 찾을수가 없어서 힘드네요...염치없지만 어느정도 가이드를 제시해 주실수 있으신가요?

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

조회수 292


1 답변


좋아요
0
싫어요
채택취소하기

딱히 정답이 없는 문제라서 고민하다가 답변을 드립니다.

닉네임마다 room의 목록을 가지고 있는데, 그 안에서는 (상대방의 닉네임이 아닌) 상대방의 email로 찾는 것은 이상합니다. Unique한 속성 하나를 정해서 사용자를 구분하는 id로 사용하는 것이 좋습니다.

각 room이 고유의 id를 가지도록 하고, 사용자 1, 사용자 2 각각 자신이 대화하고 있는 (상대방의 id + room id)의 목록을 관리하는 것이 어떨까 싶습니다. 좀 더 깊이 들어가자면, 서로가 동시에 상대방에게 대화를 걸었을 때 어떻게 해야 할지에 대한 고민도 필요합니다.

도움이 되셨기를 바랍니다.

  • 2016년 04월 17일에 작성됨
    Node.js based full stack web developer. Studying scala language.

  • Email로 가입하려고 했던 부분이라 PK로 잡아뒀었습니다. 답변 감사드립니다!    KimTaesik   2016.4.18 17:03     

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

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