Comments (21)
服务器不用告诉前端断连,APP重启才能连上,说明APP端代码写的有问题,你先看下readme相关说明,是否是配置不对,导致没有重连。也可以把代码贴一下,我看看。
from rxwebsocket.
初始化
Config config = new Config.Builder().setReconnectInterval(2, TimeUnit.SECONDS).build();
RxWebSocket.setConfig(config);
在onResume中
RxWebSocket.get(WebSocketURL + SystemUtil.geDeviceSerial())
.compose(RxLifecycle.with(this).<WebSocketInfo>bindToLifecycle())
.subscribe(new WebSocketSubscriber() {
@Override
public void onOpen(@NonNull WebSocket webSocket) {
Log.e("JzgTV", "onOpen1:");
tv_reconnect.setVisibility(View.GONE);
}
@Override
public void onMessage(@NonNull String text) {
Log.e("JzgTV", "返回数据:" + text);
if (CommonUtils.TextIsEmpty(text) && "jzgtv_success".equals(text) && !mFinish) {
// Router.newIntent(context).to(AgentWebViewActivity.class).launch();
Router.newIntent(context).to(WebViewActivity.class).launch();
}
}
@Override
protected void onReconnect() {
Log.e("JzgTV", "重连:" + WebSocketURL + SystemUtil.geDeviceSerial());
tv_reconnect.setVisibility(View.VISIBLE);
}
@Override
protected void onClose() {
Log.e("JzgTV", "onClose:");
}
});
@OverRide
protected void onDestroy() {
super.onDestroy();
//注销
Disposable disposable = RxWebSocket.get(WebSocketURL).subscribe();
if (!disposable.isDisposed()) {
disposable.dispose();
}
}
就只有这些,你看对吗。
from rxwebsocket.
在onDestroy里的代码,不用写,你在onResume里用RxLifecycle的BindToLifecycle是自动注销的,RxLifecycle需要在application里初始化
from rxwebsocket.
Config配置没有加日志打印,你开启日志开关,看下日志
from rxwebsocket.
试试这个config,显示 RxWebsocket内部日志,并且有心跳检测
Config config = new Config.Builder()
.setShowLog(true) //show log
.setClient(new OkHttpClient.Builder()
.pingInterval(3, TimeUnit.SECONDS) // 设置心跳间隔,这个是3秒检测一次
.build()) //if you want to set your okhttpClient
.setReconnectInterval(1, TimeUnit.SECONDS) //set reconnect interval
.build();
from rxwebsocket.
加了,初始化也完成,我断网测试重连是有Log的,刚才我又重启了服务器,是没有任何Log过来,也没有任何回调。不能确定是否真的断连了。 但如果我重启app或者刷新一下生命周期,就能连上。
from rxwebsocket.
好的。我试试
from rxwebsocket.
是否解决问题,都给我反馈一下,还有一种设置timeout的方式,也可以用的
from rxwebsocket.
- -、已按你说的全部设置,但没有重连,也没有Log和错误返回。
from rxwebsocket.
配合上面的config,获取Websocket的时候用这个方法:
RxWebSocket.get(WebSocketURL + SystemUtil.geDeviceSerial(),10,TimeUnit.SECONDS)
还有你说的重启服务器,是把服务器关闭吗?还是说,服务器发送了一个关闭WebSocket的指令(服务端调用了websocket.close())?
from rxwebsocket.
我问过服务器,他说就是服务器关闭重启(就是重新布属服务器代码),没有特别发送指令说 close了。。
from rxwebsocket.
但是服务器说当重启的时候能看到服务器那边的WebSocket默认会发送一条close命令,是WebSocket自已执行的。
from rxwebsocket.
按照你说的 RxWebSocket.get(WebSocketURL + SystemUtil.geDeviceSerial(),10,TimeUnit.SECONDS) 这要样的意思是10秒重连一次吗?。我看log是这样的。这样是正常的吗?。是不管有没有连接都会十秒重连一次?.
from rxwebsocket.
差不多是这样,这个和ping/pong机制差不多,这个timeout是多少秒没有接收到数据,就重连一次,时间长短自己取舍。
from rxwebsocket.
按照你最后的办法,现在服务器重启是可以重连了,但有一点就是我上面说的,已经连接成功的时候,会十秒一次的走onReconnect() 和onOpen()回调(注:先走onReconnect()再走onOpen())。这样会造成性能浪费吗。
from rxwebsocket.
最开始的时候我集成的你的这个,可以不用这样就可以立马知道服务器重启,然后自动重启,不用加这个心跳机制,今天才突然发现这个问题的,刚开始集成的时候是没有问题的。- -。,
from rxwebsocket.
我这个库,在自己项目里使用,是可以重连的,断网、服务器重启我都试过,都是可以的。这个timeout,是在断网后,手机或平板设备响应不及时,没有及时发送连接失败通知(小米平板就是这样),导致重连不及时,我才做的这个timeout折中处理,这个会开启/关闭WebSocket,性能的话,应该影响不大,这个我没测过。但是框架内部是保证同一个url在同一时间是只有一个WebSocket连接的。如果真不行,你只能另觅他路了。
from rxwebsocket.
服务器重启会发送Close()指令 ,你那边会吗?。
from rxwebsocket.
问你们服务端,我这边服务端不发送关闭命令,框架内部是接收到服务端的关闭指令,就关闭WebSocket,当时这样写的原因是,我认为服务端要关闭,就没有必要重连了。
from rxwebsocket.
现在十秒一次的访问 会出一个内部错误 E/JzgTV: java.io.IOException: closed/websocket/app/PFSNU17C21113716 知道这是啥原因吗,websocket/app/PFSNU17C21113716这一段是我url的参数。
from rxwebsocket.
这个我不清楚
from rxwebsocket.
Related Issues (20)
- 服务端的源码能否分享一下? HOT 1
- 不行啊,虽然是可以新开dispose,但是我看了本质还是同一个连接啊 HOT 4
- 断网重连方法回调的问题 HOT 1
- SocketException 后一直无法重连 HOT 2
- disposable.dispose()方法不回调onclose吗 HOT 3
- onClosing方法收到一个1011错误码后不重连 HOT 3
- 急!!!!长时间熄屏或者其他情况无消息 HOT 2
- timeout 连接 开销有点大 HOT 1
- 心跳检测 HOT 2
- 你好!发现发送大文件会失败,发送小点的图片可以,怎样可以监听发送文件的进度? HOT 1
- 服务器发布,应用会崩溃 HOT 1
- 我想一个url 多个连接咋办 HOT 3
- onReconnect()重连成功后,不会停止重连?
- setCancellable 会立即执行 HOT 7
- WebSocket连接过程中,切换wifi,重连之后再dispose无法断开WebSocket HOT 1
- 接锅回调存在多个 HOT 1
- fragment 调用注销后没有成功注销 HOT 5
- 没有失败回调 HOT 4
- RxWebsocket引起java.io.EOFException
- 开启混淆之后RxWebSocket无法使用
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rxwebsocket.