소켓통신을 이용하여 서버와 주기적으로 데이터를 주고받고 있습니다.

 

앱이 꺼져 있는 동안에도 서버와의 연결을 유지하려고 하는데,

 

3G일때나, wifi일 때나 문제없이 잘 동작합니다.

 

하지만, 3G -> wifi로의 전환이나, wifi->3G 전환 등등 네트워크가 바뀔 때는 정말 커넥션 관리가 쉽지 않네요.

 

3G->wifi 등으로 네트웍을 바꿀 경우, 계속 소켓 타임아웃이 날때까지 멍청하게 기다립니다;;

 

소켓 타임아웃은 20초를 준 상태구요, 결국 20초를 기다린다는 소리...

 

생각보다 20초가 너무 길더군요.

 

http 방식의 연결은 안되면 다시 하면 되니까 별 문제는 없는데, socket의 경우 연결을 지속적으로 유지해야 하기 때문에 이게 참 골때리네요.

 

Connectivity Service를 이용, 네트웍이 바뀔때마다 디스커넥트 / 커넥트를 시도하는데,

 

어째서 앱이 시작할때도 동작하는건지 ㅡㅡ;;

 

wifi state를 체크하는 방법도 써볼까 했는데 그건 3G를 체크할 방법이 없어서 포기했네요

 

어떤 식으로 해야 커넥션 유지를 할 수 있을지 조언 기다리겠습니다.