졸업 프로젝트에서 채팅 쪽을 내가 담당하게 되면서 관련 자료들을 찾아보고 있다.
2021.10.29 추가
블로그 정리하다가 예전에 써둔 글을 발견해서 업데이트한다.
올해 6월에 채팅 앱으로 졸업 전시회를 출품했고, 당시 여러가지 사유로 인해 프로젝트를 spring으로 진행했었다.
채팅 서버 구현은 스프링 부트 + STOMP 프로토콜 + WebSocket + No SQL db로 진행을 했는데, 결론적으로 말하면 소켓 공부를 하려는게 아니면 소켓 통신으로 채팅을 구현하는건 지양하라고 말해두고 싶다. 상당히 낡은 방식일 뿐더러, 생각보다 어렵다. (이걸 졸프가 끝나서고 안 내 자신이 안타까울 따름..)
Firebase의 Realtime Database를 사용해서 채팅을 구현하면 별도로 서버를 생성하지 않고 매우 간단하게 실시간 채팅을 구현할 수 있다. 읽기/쓰기 API도 Firebase에서 제공하고, 인터넷에 예제도 많다. 애초에 DB이기 때문에 데이터 저장 문제를 딱히 신경써주지 않아도 된다는 장점도 있다. 나는 시간 부족으로 미처 프로젝트에 적용하지 못했지만, 메세지가 왔을 때 핸드폰에 알림을 전송하는 기능(FCM)도 Firebase에서 제공한다.
"그래도 컴공씩이나 나왔는데 이정도는 구현해줘야 되는거 아냐?" 싶겠지만, 굳이 안그래도 된다. 나도 뭔가 자존심 때문에 굳-이 소켓으로 구현을 했는데 지나고보니 대체 왜 그랬나 싶다. 이미 나와있는 기능을 잘 쓰는 것도 실력이다.
차라리 그 시간에 차라리 테스트 코드나 깃허브에 신경쓰거나, 프로젝트 내부의 다른 최적화 문제들에 대해 고민해 보는게 좋을 것이다.
1. nodejs + socket.io
장점
nodejs는 비동기언어이다! 채팅개발할때 매우 중요한 요소.
socket.io란? 실시간으로 상호작용하는 웹 서비스를 만드는 기술인 웹소켓을 쉽게 사용할 수 있게 해주는 모듈
스택플로우가 증명하는 압도적인 유저 수
단점
mysql에서 제대로 전달받지 못하는 이슈 발견 (2019/06)
2. django Channels
django는 비동기 언어 아님
Channels를 사용하면 연결과 소켓을 비동기 처리 가능
3. php +swoole
장점
php는 비동기 언어 아님
swoole 은 php에서 비동기를 지원하는 프레임워크이다.
단점
한글 자료가 없음 (영어 자료도 별로 없음. 그냥 자료가 없다!)
'기타' 카테고리의 다른 글
공부중입니다. (0) | 2021.01.13 |
---|---|
시험공부하다가 딴짓 (0) | 2020.10.15 |
2020 백엔드 개발자 로드맵 (0) | 2020.09.24 |
티스토리 스킨 변경 : Square (0) | 2020.09.24 |
Notion to Tistory 의 한계 (0) | 2020.09.24 |