NodeJs Socket.io 채팅 앱

조회수 1700회

현재 애플리케이션을 구현하고 있는데, 서버 부분을 개발하고 있습니다.

사용자 계정 정보로그인을 해서 DB에 유저 정보를 저장합니다.,
글을 쓰는 등 여러 기능이 있는데,
이제 채팅 부분만 남아서 여러 채팅 구현 방법을 알아보고 있는데, Socket.io로 구현할 생각을 하고 있습니다.

1

제 애플리케이션은 한 사용자가 글을 남기면, 그 글을 본 어떤 사용자가 그 글을 작성한 사용자에게 메시지를 보낼 수 있는 기능을 가진 채팅이 필요합니다.
여기서는 메시지를 받을 사용자가 offline일 때도 메시지를 받을 수 있어야 합니다.
그런데 아무리 찾아봐도 socket.io에서 offline인 clients에게 메시지를 보낼 방법을 찾기가 힘들더군요.. 혹시 그런 방법이 있을 까요?

2

client들이 socket에 접속 할 때 마다 계속 다른 socket.id를 가지더군요
저는 한 클라이언트가 다른 클라이언트에게 메시지를 보낼 때,

io.to(**socket.id**).emit('event', message)

이런 방식으로 구현했습니다.
한 사용자가 socket에 재접속하여 socket.id가 바뀌었다면,
서버나 다른 클라이언트가 그 사용자의 socket.id가 바뀐 사실을 알아야 할텐데 어떻게 처리해야 할지 모르겠습니다.
(DB에 사용자의 정보를 저장하고 있으니 사용자 table의 field에 socket.id를 추가해서 DB로 동기화 시킬려고 하려고 했으나, 매번 DB에서 꺼내야 하기 때문에 시간이 너무 많이 들 것같습니다..)
혹시 그 처리방법에 대한 예제가 있을 까요?

3

앱을 껐다가 켜도, 다른 사용자와 주고 받았던 메시지를 유지 하고싶습니다.
이 점은 여러가지 방법이 있으리라 예상되는데, 주로 대부분의 애플리케이션들은 어떤 방법을 사용하는지 궁금합니다.
이것은 session을 사용 할 수도 cookie를 사용 할 수도, DB를 사용 할 수도 있을 것 같은데 주로 어떤 방법을 사용 하나요??
  • (•́ ✖ •̀)
    알 수 없는 사용자

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

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

(ಠ_ಠ)
(ಠ‿ಠ)