[android] Service 앱과 async로 통신하는 RxMessengerService

[android] Service 앱과 async로 통신하는 RxMessengerService

참고 url

라이브러리: https://github.com/Aevi-UK/android-rxmessenger

예제: https://github.com/susemi99/RxMessenger-sample

 

클라이언트

  • 사용할 명령어를 선언한다.
    서버에서도 이걸 사용해야 한다.
  • 전송에 사용할 클라이언트 클래스를 만든다.
    clients 배열에 넣는 건, onDestroy 될 때 연결이 끊기지 않은 것들의 연결을 끊기 위함이다.
  •  즉시 응답이 오는 요청 보내기
    응답을 받으면 연결을 끊어준다.
    요청을 받기 전에 dispose() 를 먼저 시켜주는 건 아직 오지 않은 응답을 취소시키고 새로운 요청을 보내기 위함이다. 안하면 먼저간 요청이 오지 않은 상태에서 새로운 요청이 또 가기 때문에, 2개의 요청이 오게된다.
  • 30초 후에 응답이 오는 요청 보내기
    기본적으로 즉시 응답 받는 것과 큰 차이 없다.
  • 3초 마다 계속 응답이 오는 요청 보내기
    연결을 끊으면 안된다.
  • 테스트를 위해 강제로 오류를 내는 신호도 보내본다.

     

서버

onCreate(), onDestroy() 에 로그를 찍어보니, 모든 요청에 응답을 하면 서비스가 종료된다. 즉시응답을 보내고 나면 종료되고, 3초 마다 응답을 보내는 중이라면 죽지 않았다. 강제로 오류를 발생시켜도, 그 이후의 요청에도 응답을 잘 해줬다. 혹시나 싶어서 Singleton 클래스도 넣어봤는데, 강제로 종료 시켰어도 값이 유지됐다.

  • AbstractMessengerService를 상속받은 서비스 클래스를 생성한다.

  • 입력받을 명령어를 설정한다.
  • 요청을 받는다.
  • 기본적인 사용법은 아래와 같다.
  • 즉각적인 응답을 보내준다.
  • 30초 뒤에 응답을 보낸다.
    테스트로 30분 뒤에 응답 보내게 해봤는데, 잘 왔다.
  • 3초 마다 응답 보내기