Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 자바스크립트
- UML
- 안드로이드 푸시
- chart.js
- 설치
- html5
- php 취약점
- roundcube
- not working
- PHP
- android 효과음
- soundpool
- 안드로이드 푸쉬
- 안드로이드
- C#
- WebView
- 자동 생성
- javascript
- 우분투
- Android
- xe
- php 시큐어코딩
- 안드로이드 gcm
- FCM
- 폼메일
- C# IO
- mysql
- Mail Server
- curl
- dovecot
Archives
- Today
- Total
그러냐
안드로이드 websocket 연결 상태 확인 방법 / 연결 지속 방법 본문
반응형
구글링을 통해 여러 블로그들을 살펴본 결과
웹소켓 연결은 일정 시간이 흐르면 연결해제가 된다고 한다
그런데 해제된 객체를 가지고 send명령을 하니 익셉션이 발생되는게 아니라 그냥 씹혀버린다
소켓클라이언트 메모리해제가 정상적으로 이뤄지지 않아서인듯
그래서 웹소켓 서버측에서 주기적으로 신호를 보내 연결을 유지하는 방법을 쓴다고 하는데..
서버측은 내가 만든게 아니라..
그래서 .isOpen() 이런 함수가 있나 봤는데 내가 사용중인 API는
if(mWebSocketClient.getReadyState()==WebSocket.READYSTATE.OPEN){
mWebSocketClient.send(json.toString());
}
이런 식으로 getReadyState() 를 통해 확인할 수 있는듯하다
readystate 상태로는 not_yet / conneting / open / close 등..과 같은 상태값을 사용한다
근데 안되네.. 테스트 후 다시 정리하는 걸로..
--------------------------------------------------
연결상태 확인으로는 안될 것같아서 그냥 onResume 에서 재접 시켜주는 걸로 마무리ㅋ
if(mWebSocketClient!=null){
mWebSocketClient.close();
new Handler().postDelayed(new Runnable() {
public void run() {
mWebSocketClient = null;
connectWebSocket();
}
}, 900);
null 인지 확인해서 소켓 닫아준후 0.9초후에 다시 연결시켰다
딜레이를 안주면 닫는 시간이 걸려서 연결된 다음에 닫아져 버린다
null 일경우 평소대로 연결시킨다
정리
- 웹소켓 연결은 시간이 지나면 끊어진다
- readystate도 확인이 잘 안될 때가 있다
방법
- 서버에서 하트비트를 날려준다
또는
- 특정 이벤트가 있을 때 재접시켜버린다
반응형
'android' 카테고리의 다른 글
adaptive icon background 투명 배경 (0) | 2018.12.03 |
---|---|
webview html 파일 열기 (0) | 2018.11.28 |
간단하게 Activity stack 처리하는 방법 (Android) (0) | 2018.11.20 |
리스트뷰 더 보기 기능 스크롤 하단 (0) | 2018.11.19 |
RecyclerView 의 최상단과 최하단 스크롤 이벤트 감지하기 (0) | 2018.11.19 |