Closed wwdn closed 5 years ago
这个还真没有,okhttp 里的也没有提供回调,是这样的,如果WebSocket连接已经打开,调用RxWebSocket.send()方法返回值 如果是true的,说明消息已经入列,或者你和你们后台定义一个小协议,就是你ssend数据后,服务端接收后,给你返回一个tag,利用发送消息后是否收到tag也是可以的
好的 谢谢 我想问下 mainactivity onPause的状态下 会onClose吗?
或者说 我自身应用在后台运行 是否会执行onClose?
好的 谢谢 我想问下 mainactivity onPause的状态下 会onClose吗?
RxWebSocket的开关是由你自己控制的,这个框架基于RxJava写的,如果你不主动关闭,框架是不会关闭的,至于在后台运行,要看你的应用保活了,都是不会主动关闭的。你看下demo,或者开一下我的另外一个框架RxLife
您好!我在测试的,当我打开第三方应用,会执行onClose。我没有手动取消,我的应用也在后台运行。并没有kill掉
调用代码粘贴一下
您好!我想问下 发送数据有限制吗?或者发送byte的时候有限制吗?我在测试的时候,发送一个50K的图片重连了,是否有设置发送数据的限制?
无代码,问题描述无法定位问题
您好!再次感谢!数据限制问题解决了 主要服务端的接受数据使用的默认的buffersize,修改下就好了,至于close我在看看
当我websocket 连接initWeb放在button1里点击连接,点击button2打开第三方应用会执行close方法。当websocket 连接initWeb放在oncreate里,进入就执行连接,点击button2打开第三方应用不会执行close方法。 总结:主动连接,打开第三方应用会执行close方法,被动不会。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1 = (Button) findViewById(R.id.btn);
button1 .setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// initWeb(); } }); initWeb(); Button button2 = (Button) findViewById(R.id.btn2); button2 .setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //打开第三方应用 Intent intent = new Intent(OPEN_MODEL_APP); startActivity(intent); } }); } //websocket 连接 private void initWeb() { webSocketSubscriber = new WebSocketSubscriber() { @Override protected void onOpen(WebSocket webSocket) { super.onOpen(webSocket); LogUtil.log("----onOpen " + webSocket.toString()); }
@Override
protected void onMessage(String text) {
super.onMessage(text);
LogUtil.log("----onMessage " + text);
}
@Override
protected void onMessage(ByteString byteString) {
super.onMessage(byteString);
LogUtil.log("----onMessage byteString" + byteString);
}
@Override
protected void onReconnect() {
super.onReconnect();
LogUtil.log("----onReconnect ");
}
@Override
protected void onClose() {
super.onClose();
LogUtil.log("----onClose ");
}
@Override
public void onError(Throwable e) {
super.onError(e);
LogUtil.log("----onError " + e.toString());
}
};
RxWebSocket.get("url")
.compose(RxLifecycle.with(this).<WebSocketInfo>bindToLifecycle())
.subscribe(webSocketSubscriber);
}
RxWebSocket.get("url")
.compose(RxLifecycle.with(this).<WebSocketInfo>bindOnDestroy())
.subscribe(webSocketSubscriber);
是那个bindtoLifecycle导致的,用 bindOnDestroy 会在界面销毁的时候,自动关闭,这是RxLifecycle库里的功能,不是bug,你用的姿势不对。
好的 谢谢
有发送成功的回调吗?如果没有能否增加发送成功的回调?