본문 바로가기

프로젝트

TCP/IP Socket Programming 번역 채팅앱

프로젝트 소개


한, 중, 일 3개국간 교류가 늘어남에 따라, 젊은이들간 만남을 원하는 사람이 늘어가고 있습니다. 하지만 가장 큰 언어의 장벽때문에 많은 사람들이 교류를 할 기회를 놓치고 있습니다. 이에 언어의 장벽을 넘어 한, 중, 일 3개국간의 교류를 위해 번역기능이 추가된 채팅앱을 생각하였습니다.

 

개발환경


결과화면


로그인 화면
회원가입 화면
사용자간 매칭 화면
일본인과 1:1 대화
단체 채팅방

참여한 부분


개인 프로젝트로 진행하였습니다.

느낀점


Firebase로 설계한 채팅앱을 기반으로 하여 만들어 보았습니다. Firebase로 해결한 부분을 Server/Client TCP/IP소켓 프로그래밍으로 변환하는 과정이 가장 힘들었던 것 같습니다. Firebase로 구현된 코드에서는 간단히 한 줄이면 알아서 처리가 부드럽게 되었지만, TCP/IP소켓 프로그래밍으로 이를 해결하기 위해서는 메시지format에 맞게 해당 내용들을 넣어주어야 하고, 이를 Server에 보내고 Server로부터 응답까지 확인하는 과정을 거쳐야 합니다. 이러한 과정 중에 다른 사용자로부터 메시지를 받을 경우 이를 업데이트 처리해주어야 하는데 이런 동기화 과정을 맞추는 부분을 많이 고민하였습니다. 기존의 카카오톡처럼 메시지를 받으면 push알림으로 알려주는 것은 포기하고, 사용자가 해당방에 들어갔을 때, Server로부터 입장시간전의 대화내용을 불러오게 됩니다. 그리고 메시지를 보내게 되면 Server에서 상대방이 해당방에 현재 접속중인지 확인하고, 접속중이라면 메시지를 받은 유저의 화면에 채팅 Bubble을 추가하도록 메시지를 보내도록 해주었습니다. 상대방이 대화창을 띄워 놓고 있지 않다면, 서버에 채팅내용을 저장해 두었다가 상대방이 채팅방에 들어오면 해당내용을 읽을 수 있도록 해줍니다. 비록 완벽한 기존의 메신저 앱을 따라하진 못하였지만, TCP/IP소켓 통신을 이용하여 언제 메시지를 주고받을지 타이밍을 정하는 부분과 어떤 format의 메시지를 사용하여야 원하는 결과를 얻을 수 있을지 많이 고민해보았고 큰 공부가 되었습니다.
어떤 식으로 메시지를 DataBase에 저장해주어야 채팅에 가장 적합한지에 대해 고민도 많이 해보았지만, 시간이 부족하여 대충 설계한 부분이 아주 아쉬웠습니다. 또, Local에서의 데이터 전송으로 만들어서, 스마트폰의 가장 큰 장점인 휴대성을 살리지 못한 부분이 실수라 생각합니다. 겉만 앱 모양이라고 생각되어 많이 아쉽습니다.

PaPaGo API의 경우 문서가 잘 정리되어있어 편하게 사용하였습니다. 같은 메시지라도 사용자의 국적에 맞추어 번역하여 보내는 과정이 조금 복잡하였습니다. 

간단한 채팅이라고 생각하였지만 채팅 구조에 대해 좀 더 깊게 생각해볼 수 있었던 좋은 프로젝트였습니다.

Github


Client : https://github.com/psg2021/HelloWorld

 

psg2021/HelloWorld

TCP/IP Socket Programming HelloWorld. Contribute to psg2021/HelloWorld development by creating an account on GitHub.

github.com

Server : https://github.com/psg2021/HelloWorldServer