본문 바로가기

Android

[23일차] 채팅xmpp

xmpp 주소를 교환 해 주는 애다 


채팅이라고 하는게 기술적으로 주소를 주고받는 것이다. 



p2p 기술이다. 


아~ 클라이언트 서버로 채팅을 하는 경우는 거의 없다. 



실제로는 단말끼리 주고 받는다. 



xmpp서버간 연동 규격이있다. 


구글 메신저나 해외 는 xmpp로 되어있다. 



표준인거다. 



딥러닝은 패턴을 찾는 알고리즘이다. 


알파고 뒤에는 컴퓨터 1000대가 붙었다. 



병렬처리 기술 Gpu 



단말에서 서버로 데이터를 보낼때 중간에 게이트웨이가 마킹을 한다. 그럼 서버가 게이트웨이를 통해서 마킹을 통해 주고 받는다. 


내부 ip를 사용할 때 돌아가는 메카니즘이다. 


이거를 NAT라고 한다. 상당 히 복잡하다. 


smack 을 써서 구현한다. igniterealtime 에서 Openfire라고 해서 xmpp서버를 제공한다. 이건 넘어간다. 



친구목록은 Roater라고 한다. 


이걸 얻어오면 id를 얻는다. 별도 Thread이다. 


초기화

smack을 쓰기 위해서는 Internet permission이 있으면 된다. 


라이브러리 추가 하면 된다. 

접속 할때 는 도메인 호스트 포트=5222, 커넥션을 만들고 빌더를 만들고 빌더에 세팅하고 연결한다. 


연결 설정 하고 나서 xmpp 서버 연결하고 커넥션이 변경되면 리스너를 통해서 받는다. 

간단하게 예제 한번 돌려 보겠다. 

여러분 들이 실습을 하려면 Client가 있어야한다. 


로그인 했는지 로그아웃했는지 하는 상태를 Type이라고 한다. 


보냈는지 안했는지는 Stanza라고 한다. 

친구들은 Roastrer, c친구는 entry 라고 하낟. 

igniterealTime 들어가서 spark를다운받고 계정 2개로 로그인 로그아웃 하면서 서로 친구등록을 해준다. 



roaster도 상태를 가진다. 메시지를 그럼 xmpp를 쓸 수 있다. 


이거 이용해서 채팅하는거는 그냥 저렇게 한다. 정도만 알면 된다. 


채팅앱을 어떻게 구성하는 지를 알고 있어야한다. 


ChatService 채팅메세지를 액티비티에서 보내는건 보내도 된다. 


그치만 항상 받는건 Service가 한다. 채팅 메세지를 xmpp를 통해서 받을 수도 있고, gcm을 통해서 받을 수도 있다. 


저 부분은무엇이 되는 상관없다. 

그리고 db에 저장한다. 

기르고 액티비티한테 메시지가 왔다고 알려준다. 

받는 애가 없으면 service가 노티피케이션을 보낸다. 

xmpp를 하게되면 service가 무조건 있어야 한다. BootREceiver 가 service를 실행해준다. 

하지만 gcm을 쓰면 service의 역할을 알아서 해준다. 


chat서비스는 메시지가 오느는걸 받으려고 한다. 

액티비티느 리시버를 등록해서 메시지가 오는지 안오는지 확인한다. 




'Android' 카테고리의 다른 글

[23일차]페이스북 로그인 실습  (0) 2016.08.19
[23일차] 페이스북 Oauth  (0) 2016.08.19
[22일차]notification  (0) 2016.08.17
[21일차] 센서  (0) 2016.08.16
[21일차]카메라 사용하는 방법  (0) 2016.08.16