마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

카톡 같은 채팅 서버 질문이요.

0 추천
정말 초보 개발자입니다. 회사 입사했는데 개발자는 저 혼자구요. 두달간 소켓통신으로 1:1 채팅앱 구현을 했는데

정말 허접합니다. ... 그런데 이번에 카톡 메신저와 같은 채팅앱을 구현 하라는데 ...

이걸 개발을 해야 되나 말아야 되나 제 생각엔 간단해 보이지가 않는데 사장이 막무가내 라서...

송신 : 안드로이드 전송 이벤트 발생 > php text get 방식 전달>  db 추가 (시간 정보 함께) >json parsing>리스트뷰

송신은 어찌어찌 이렇게 id 값 넣고 전송 문자 넣고 시간 넣고 하면 보내는쪽은 가능해 보입니다 그런데 문제는 수신

소켓에선 그냥 자바 서버 스레드가 돌면서 버퍼 되엇던걸로 아는데 이걸 카톡처럼 db에 쌓고 하려고하니 수신측은 정말 모

르겠습니다 핸드폰에서 서비스로 계속 쓰레드를 돌리고 있어야되는건가요

수신 : 이벤트 발생 스레드를 계속해서 돌린다 이벤트 발생 핸드폰에 알림

이게 맞는건가요 저걸 1주일만에 개발하라는데 가능한건지 조차도 모르겠습니다. 어떻게 스레드를 돌려야 할지도 모르겠

고 거의 소켓통신도 구글링으로 짜집기 했습니다. 괜찮은 예제나 방식 조금만 알려 주실수 있을까요.. 그리고 제가 생각했

을때 이런식으로 개발해봐야 문제가 많이 생길거 같은데 사장은 그냥 진행하라네요 제가 어떻게 하는게 좋을까여 ㅠㅠ
숀화이트 (3,310 포인트) 님이 2014년 5월 26일 질문

1개의 답변

0 추천
개발 방향에는 다양한 방법이 있습니다.
가장 심플한 방법으로는 Socket 연결시 Recevier와 Sender Thread를 각각 생성해서 유지 하는 방법이 있습니다.
이때 생성된 Thread는 demon 으로 설정해야하고 Receiver 에서 받은 데이터를 바로 UI에서 보여 주려고 한다면
Android 상에서는 Handler를 이용해서 UI 쪽으로 보내는게 좋습니다.
또한 Sender 에서는 BlockingQueue를 이용해서 Message를 보내면 좀 수월 할 것입니다.
각각 Thread 들의 동작에 대해서 result를 받고 받은 result에 따라서 추가 동작을 하도록 구현 하는 편이 좋습니다.

추가로 제 경험상 핸드폰에서 server를 돌리면 1대 1채팅은 그렇다고 치더라도 1대 다수는 무리 인것으로 알고 있습니다.

Server code를 멀티플렉서로 구현하지 않으면 하나의 client가 연결 될때마다 Thread가 적어도 2개가 생겨야 합니다.

여튼 급한대로 구현을 하자면 Thread 2개로 처리를 할 수 있습니다만, 궁극적으로는 멀티플렉서 server를 추천합니다.
카라드레스 (2,910 포인트) 님이 2014년 5월 26일 답변
카라드레스님이 2014년 5월 26일 수정
...