Development/Socket.io

    [Socket.io] Socket.io를 이용한 실시간 채팅

    읽기 전에 Socket.io와 room에 대해 알고 있어야 합니다. Socket.io 공식 문서를 참고해 주세요. 채팅 로직 실시간 채팅을 위해서는 다양한 경우를 고려해야 합니다. 단순하게 모든 사용자가 socket 접속이 되어 있을 경우만 생각한다면 socket 이벤트만 전송하면 되겠지만 실제로는 그렇지 않습니다. 누군가는 인터넷 연결 환경 문제로 인해 오프라인이었다가 온라인이 되는 경우도 있을 수 있고, 누군가는 나중에 채팅을 확인하기 위해 앱을 껐을 수도 있습니다. 지금부터 미어캣이 이 경우의 수들을 어떻게 처리했는지 알아보겠습니다. 여기서는 실시간 채팅을 위해 socket.io를 사용합니다. 클라이언트에 2개의 socket 연결을 이용하는데, 하나는 실시간 메시징을 위해서이고 나머지 하나는 메시지..

    [Socket.io] socket.io 간단한 예제

    간단한 예제를 만든다. 먼저, socket.io는 각 client에서 라이브러리를 로딩해주는 socket.io의 client, 그리고 서버를 구성하는 socket.io가 있다. var server = http.createServer(app); const io = require('socket.io')(server); // connection이라는 이벤트가 발생하면 유저 연결이라는 신호를 주고, 아래 2개의 이벤트가 발생하면 callbak해줌. // chat message라는 이벤트가 발생하면 io에서 msg를 emit하고 // disconnect라는 이벤트가 발생하면 유저의 연결을 끊어 줌. io.on('connection', (socket) => { console.log("a user connected"..

    [Socket.io] 채팅 기능에 관한 고찰

    실시간 채팅 구현 조금 생각을 해 보았다. 1) 온라인 -> socketio로 연결해서 실시간 통신 1.5) 백그라운드 -> FCM으로 push 알람만 보냄. 2) 오프라인 -> 아무것도 하지 않음. 다만 온라인으로 상태 변경 시, 서버에서 읽지 않은 메시지 목록을 전부 받아오면 될 듯. + 읽은 기능 구현은 users - room join table에 해당 유저가 접속한 시간을 적고, 그 시간이 갱신되면 그것보다 작은 것들의 읽은 시간을 갱신하면 될 듯. ​ 저번에 올린 예제를 만든 파일의 경우, 인터넷 연결이 끊기면 메시지를 받을 수 없다는 문제점이 존재했다. 그래서 서버에 보낸 메시지를 저장하는 schema를 추가하려고 합니다. 형태는 ((보낸 시간, 방 번호), 보낸 사람, 메시지 내용) 정도로 ..