public static WebSocket webSocket;
public OkHttpClient mOkHttpClient = new OkHttpClient.Builder().readTimeout(15000, TimeUnit.SECONDS)//設定讀取超時時間
.writeTimeout(15000, TimeUnit.SECONDS)//設定寫的超時時間
.connectTimeout(15000, TimeUnit.SECONDS)//設定連線超時時間
.build();
public void webSocket() {
String url = "ws://websocket"; //伺服器端的地址
Request request = new Request.Builder().url(url).build();
WebSocketCall webSocketCall = WebSocketCall.create(mOkHttpClient, request);
webSocketCall.enqueue(new WebSocketListener() {
@Override
public void onOpen(WebSocket webSocket, Response response) {
Log.d("WebSocketCall", "onOpen");
MainActivity.webSocket = webSocket;
try {
webSocket.sendMessage(RequestBody.create(WebSocket.TEXT, "測試"));//傳送內容
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 連線失敗
*/
@Override
public void onFailure(IOException e, Response response) {
Log.d("WebSocketCall", "onFailure");
}
/**
* 接收到訊息
*/
@Override
public void onMessage(ResponseBody message) throws IOException {
try {
MyLog.e("message" + message.string());//接收實時內容
} catch (Exception e) {
message.source().close();
}
message.source().close();
}
@Override
public void onPong(Buffer payload) {
Log.d("WebSocketCall", "onPong:");
}
/**
* 關閉
*/
@Override
public void onClose(int code, String reason) {
MyLog.e("onClose");
}
});
}
原始碼下載地址