자바 웹 소켓 프레임 워크
GitHub의 주소 : https://github.com/TooTallNate/Java-WebSocket
현재 이상 오천 스타, 또한 유지 보수 업데이트가이 문서는 안정적인 인스턴트 메시징을 달성하기 위해이 오픈 소스 라이브러리를 사용하는 방법에 대해 설명합니다
첫째,의 도입 자바 웹 소켓
1 build.gradle 첨가
구현 "org.java - 웹 소켓 : 자바 웹 소켓 : 1.4.0"
2, 요청 권한에 네트워크에 가입하기
<사용-권한은 안드로이드 : 이름 = "android.permission.INTERNET은을"/>
3, 새로운 클라이언트 클래스는
클라이언트 클래스를 생성하고 상속 WebSocketClient, 다음과 같이 네 가지 추상 메소드와 생성자를 구현해야한다 :
공용 클래스 JWebSocketClient이 WebSocketClient {확장 공공 JWebSocketClient (URI serverUri를) { 슈퍼 (serverUri, 새로운 Draft_6455 ()); } @Override 공개 무효으로 onOpen (ServerHandshake의 handshakedata) { Log.e ( "JWebSocketClient" "으로 onOpen ()"); } @Override 공공 무효의 onMessage (문자열 메시지) { Log.e ( "JWebSocketClient", "의 onMessage ()"); } @Override 공개 무효으로 onClose (INT 코드 문자열 이유로 원격 부울) { Log.e ( "JWebSocketClient" "으로 onClose ()"); } @Override {공공 무효의 OnError (예외 예를) Log.e ( "JWebSocketClient", "
상기으로 onOpen () 메소드는 차례로 연결된 웹 소켓 호출에서의 onMessage () 메시지가 수신 될 때 메소드가 호출 될 때,으로 onClose () 메소드는 연결이 끊긴의 OnError () 메소드 때 상기 접속 에러를 호출 할 때 호출 될 때. 새로운 Draft_6455의 생성자 () 사용자가 작성하거나이를 작성하지 프로토콜 버전의 사용을 나타냅니다.
(4), 웹 소켓 연결 설정
의 연결을 설정하는 경우에만 다음 통화 연결 방법은 WebSocketClient 개체를 재사용하지 않습니다 주목해야한다이 클라이언트를 초기화 할 필요가 초기화를 반복 할 수없는, 나머지는 현재 클라이언트 호출 할 수 있습니다.
URI = URI.create URI를 ( "WS : // *******"); JWebSocketClient 클라이언트 = 새로운 새로운 JWebSocketClient (URI) { @Override 공공 무효의 onMessage (문자열 메시지) { // 메시지가 수신 메시지는 로그 전화부 ( "JWebSClientService", 메시지); } };
WS : // IP 주소 : 포트 번호
연결 () 메서드 또는 connectBlocking을 연결하는 데 사용할 수 있습니다 () 메소드는 connectBlocking을 권장 () 메소드, 더 대기 작업의 connectBlocking, 윌 다음 연결을 다시 보내는
{시도 client.connectBlocking를 (); } 캐치 (예외 : InterruptedException 전자) { e.printStackTrace (); }
실행되었음을으로 onOpen () 메소드를 볼 수있는 클라이언트를 실행 한 결과,이 연결을 설정하고, 상기 웹 소켓 것을
도 5는, 메시지를 전송하는 단계는 다음과 같이, 메시지 송신하기 만 호 () 메소드를 보낸다
경우 (클라이언트 = 널 (null) && client.isOpen (!)) { client.send ( "你好"); }
6, 근접 소켓 커넥터
근접 호 접속 확대 ()에있어서, 마지막 반복 WebSocketClient 인스턴스화 목적을 피하기 위해, 목표는 소정의 블랭킹 기간 동안 닫히고.
/ ** *断开连接 * / 개인 무효 closeConnect () { {시도 하면 {(널 (null) = 클라이언트!) client.close (); } } 캐치 (예외 전자) { e.printStackTrace (); } 마지막으로 { 클라이언트 = NULL; } }