본문 바로가기
반응형

개발 기초 다지기69

알림기능 기술 선택(SSE, Redis Pub/Sub, Socket.IO) 채팅 기능에 이어 알림기능을 구현하게 되었다. 지난번에도 알림기능을 구현한 경험이있는데, 당시 시간도 촉박하고 아는것이 별로 없어 기술 선택시 다양하게 고려해보지 못했다. 하지만 이번에는 최종프로젝트인 만큼 여러 기술 중 우리의 서비스에 맞는 기술들을 엄밀히 고려해보려 한다.구현하려는 기능커뮤니티/리뷰의 새글 등록 및 댓글 등록시 알림읽음/안읽음 기능알림 클릭시 해당 게시물로 연결이번 구현하는 알림기능에서 필요한 부분은 이렇게 세 가지가 있다.해당 기능을 충족하는 기술 선택을 위해 여러 기술들에 대해 알아보았다. 고려 기술1. Server-Sent Events (SSE)특징:서버에서 클라이언트로 단방향 스트리밍을 제공.HTTP 기반으로 작동하며, 브라우저와의 호환성이 높음.연결 유지 비용이 비교적 낮음... 2024. 8. 12.
SSL 연동 후 Socket 연결 트러블슈팅 문제로컬 환경에서 소켓.io를 이용해 채팅 기능을 성공적으로 구현하였으나, 서버에 배포 후 SSL을 적용한 상태에서 소켓 연결이 되지 않는 문제가 발생했습니다.해결 방법해당 부분에서 문제가 생길 수 있는 여러 부분을 살펴보았습니다.클라이언트 측에 ‘wss://’ 프로토콜이 아닌 ‘ws://’을 ****사용하고있지 않은지, ****방화벽 설정을 확인하고, WebSocket을 사용하는 포트가 열려 있는지 등 여러 문제 가능성을 고려하였고 문제를 분석하기 시작했습니다.문제 분석로컬 환경에서 Socket.io가 정상적으로 동작하였으므로, 배포 환경에서의 설정 문제 의심SSL을 적용한 HTTPS 통신이 실패한 것으로 보아, 소켓 요청이 제대로 프록시되지 않고 있는 것해결책 모색socket.io 공식 문서에서 SS.. 2024. 8. 11.
socket io 1:1 채팅 구현 (2)jwt 토큰 전달 1:1 채팅을 구현하며 두번째로 생각이 많이 되었던 부분은 jwt를 통한 토큰 전달 부분이었다. 기존 공통 jwt strategy와 guard를 이용해 채팅을 하나씩 구현해나가는 중 jwt쪽에서 계속적으로 에러가 발생했다. 처음에는 원인을 찾지 못했는데, 하나 둘 찾아보던 중 socket 같은 경우 jwt를 전달하는 방식이 다르다는 것을 알게 되었다.  HTTP와 WebSocket의 차이점HTTP : 요청-응답 방식으로 동작. 클라이언트가 서버에 요청을 보내고, 서버는 요청에 대한 응답을 반환. 이 과정에서 클라이언트는 요청 헤더에 JWT 토큰을 포함시킬 수 있으며, 서버는 이 토큰을 검증하여 사용자의 인증 상태를 확인할 수 있다.WebSocket :  클라이언트와 서버 간에 지속적인 연결을 유지하는 프.. 2024. 8. 2.
socket io 1:1 채팅 구현 (1)채팅방 DB 저장 socket.io를 통한 1:1 채팅을 구현했다. 이 과정을 진행하며 여러 부분에서 고민이 되었는데, 그 중 고민되었던 부분들을 정리해보려 한다.1. 채팅방 각 유저 id 에 대해 각자의 DB 칼럼에 어떻게 알맞게 넣을 것인가?문제이번에 구현하는 채팅 기능의 경우 2가지 도메인에서 접근이 가능하다. 1. 서비스 유저 2.CP(Content Provider) 그렇다보니 chat 테이블의 칼럼도 userId와 cpId로 나눠져있다. 채팅방에 입장할시 서비스 유저 입장에서는 CP의 ID를 입력하고 들어올 것이고, CP의 입장에서는 서비스 유저의 ID를 입력하고 들어올 것이다. 이 상황에서 데이터베이스에 채팅방을 저장할 때 cpId와 userId가 어떻게 적절히 분류되어서 들어가게 만들 수 있을 것인가?해결과정.. 2024. 8. 1.
반응형