안녕하세요. 저는 카톡과 같은 채팅 앱을 만들고 있습니다.
기능은 제대로 구현이 되었는데 성능에 문제가 있어 이렇게 질물을 올립니다.
카톡과 같은 채팅창에 여러 명이 동시에 챗을 할 경우 텍스트 입력창에 입력되는 텍스트가 느리게 입력이 되고 전송 버튼 또한 느리게 반응을 하네요. 새로운 챗이 있을 때 마다 화면 refresh를 사용하는데 혹시 다른 방법이 있는지요? 여러 명의 챗 내용을 뿌려주는 과정에서 다른 동작들이 blocking 되는 것 같습니다만 (챗을 받아오고 텍스트를 입력하는 부분은 스레드로 구현되어 있습니다). 그리고 챗 중에는 화면 스크롤 속도도 너무 느려지네요. 고수님들의 조언을 구합니다.
챗 서버는 어떤거 기반으로 만드셨나요? 단순 Http통신? 아니면 오픈소스로 알려진 챗 서비스?
새로운 챗 생성은 어떤식으로 정보를 받나요? 푸시? 주기적인 폴링?
챗은 오픈소스 기반의 서버 클라이언트 방식이구요. HTTP가 아닌 proprietary protocol 로 폴링 방식이 아닙니다. 즉, TCP로 연결되어 있어 사용자들이 서버에 접속되어 있을 때 실시간으로 챗을 주고 받을 수 있는 구조입니다. 이럴 경우 카톡과 같은 채팅창을 열고 서버에 접속되어 있는 사용자를 초대해서 그룹 챗을 하게 될 때 버벅거림의 문제가 발생한다는 거죠. 아무래도 다중 사용자로 부터 데이터를 받고 전송하는 동안 lock 이 걸리는 것 같은데 혹시나 챗팅창 GUI에서 다른 방법으로 처리할 수 있는 부분이 있지 않을까해서 질문을 드립니다. 실제 카톡으로 테스트를 해보면 그룹챗을 통해 동시에 챗을 지속적으로 올리더라도 챗화면에 바로 반영이되고 챗 입력 창 및 전송 버튼 반응도 바로 오더라구요. 제가 만들고 있는 것은 이 부분이 잘 안되는군요..ㅜㅜ




정보가 너무 부족해서 뭐라고 답변을 드리기가 곤란하네요.
기능이 구현이 되셨다니 서비스로 통신부분은 처리하실거고 채팅 글 올라가는 부분은 서비스에서 말아가지고 온거 뷰에 추가로 띄워주는 식으로 하실건데 혹시 통신을 async 방식으로 안하신것은 아닌지 모르겠네요.
카톡 같은 것도 보시면 완전 실시간 통신은 아니라는 거 보이실건데.......
음 잘 모르겠네요.