다른 유저에게 채팅을 걸고 채팅을 입력하는 것은 그냥 게시물발행 + 댓글이랑 똑같다고 보면 됩니다 댓글도 게시물 발행입니다
유저가 채팅을 하려고 하면 우선 채팅방 게시물을 발행해주면 됩니다
그 게시물엔 지금 참여하고 있는 유저정보들, 날짜 이런게 저장되면 되겠군요
그리고 채팅방에서 유저가 메세지를 서버로 전송하면 collection에 게시물로 저장해두면 됩니다
게시물엔 아마 어떤 채팅방에 속한 메세지인지, 보낸 유저의 id, 메세지내용, 날짜 이런게 저장되면 되겠군요
그리고 유저가 재접속시 채팅방1을 누르면
채팅방1에 속하는 메세지를 collection에서 전부 가져오면 됩니다
알림도 게시물 발행입니다 그냥 알림 collection을 만든 다음에
유저1이 유저2에게 메세지를 전송한다면 컬렉션에 유저2, 알림내용, 읽었는지 여부 이런게 들어간 게시물을 발행해주면 되고
유저2가 접속할 때마다 알림 collection에 있던 유저2관련 게시물을 다 가져오면 됩니다
근데 저장이 중요하면 socket.io빼고 mongodb의 change stream + 리액트나 뷰 프론트엔드 쓰는게 편리할 수 있습니다