java http超时重连_GitHub - dev8gaby9fan/RWebSocket: RWebSocket基于RxJava2和OKHttp实现,支持断线自动重连...

RWebSocket

RWebSocket是一款基于OKHttp和RxJava实现的WebSocket连接工具,支持发送json字符串、普通字符窜

和ByteString三种数据类型消息。其中断线重连部分参考了WsManager

引入项目

在项目根目录中的 build.gradle 中加入maven仓库地址

allprojects {

repositories {

...

maven { url 'https://jitpack.io' }

}

}

在app目录下的build.gradle中加入依赖

dependencies {

implementation 'com.github.dev8gaby9fan:RWebScoket:v1.0.1'

}

使用方法

初始化WebSocketConnectHandler对象

handler = new WebSocketConnectHandler.Builder()

.url("ws://192.168.1.72:10000")//webSocket连接地址

.needReConnect(true)//是否在断开连接后自动重连

.reConnectTimeout(3*1000)//断开3秒后自动去重连

.observerOn(AndroidSchedulers.mainThread())//数据回调发生在主线程,基于RxJava实现

.subscribeOn(Schedulers.io())//数据发生在io线程

.observer(this)//观察者

.okClient(client)//OkHttpClient对象

.build();

2.连接

handler.connect();

发送消息

//JSON字符串数据,需要竭诚JSONRequest接口

RequestPacket request = new RequestPacket(new TextRequest(input.getText().toString()));

handler.sendMessage(request);//JSON字符串

handler.sendTextMessage("您好");//普通字符串

handler.sendBinaryMsg(ByteString.of("您好".getBytes()));//byteString

注意

发送JSON字符串数据请求时,需要实现JSONRequest接口

public interface JSONRequest {

String toJsonString();

}

消息回调

public void onNext(@NonNull WebSocketResponse response) {

Log.d(TAG,"================================================="+Thread.currentThread().getName()+"===================================================================");

Log.d(TAG,"接收到了消息:"+response.getType().name());

WebSocketResponseMsgType type = response.getType();

switch (type) {

case CONNECTSTATUS://WebSocket连接状态消息

Log.d(TAG, Thread.currentThread().getName()+"当前连接状态:" + ((ConnectStatusMsg) response).getStatus().getStatusMsg());

showText.append("接收到了状态消息:"+((ConnectStatusMsg) response).getStatus().getStatusMsg()+"\n");

break;

case ERROR_MESSAGE://错误消息

Log.d(TAG, Thread.currentThread().getName()+"消息发送失败:" + ((ErrorResponse) response).getMsg());

showText.append("接收到消息发送失败:"+((ErrorResponse) response).getMsg()+"\n");

break;

case MESSAGE_TEXT://字符串数据

Log.d(TAG, Thread.currentThread().getName()+"接收到服务器端的文本消息:" + ((TextMessageResponse) response).getResponse());

showText.append("接收到服务器端的文本消息:"+((TextMessageResponse) response).getResponse()+"\n");

break;

case MESSAGE_BINARY://ByteString数据

Log.d(TAG, Thread.currentThread().getName()+"接收到服务器端的byte消息:" + ((BinaryMessageResponse) response).getResponse().utf8());

showText.append("接收到服务器端的byte消息:"+((BinaryMessageResponse) response).getResponse().utf8()+"\n");

break;

}

}

断开连接

handler.disConnect()

释放资源

@Override

protected void onDestroy() {

if(this.handler != null)

handler.shutDown();

super.onDestroy();

}

最终结果

sample.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值