dhhAndroid / RxWebSocket

An auto reconnection-webSocket build with okhttp and rxJava
http://blog.csdn.net/huiAndroid/article/details/78071703
740 stars 114 forks source link

crash bug #24

Closed chenleicrm closed 6 years ago

chenleicrm commented 6 years ago

java.lang.IllegalStateException: Exception thrown on Scheduler.Worker thread. Add onError handling. at rx.android.schedulers.LooperScheduler$ScheduledAction.run(LooperScheduler.java:112) at android.os.Handler.handleCallback(Handler.java:751) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) Caused by: rx.exceptions.OnErrorNotImplementedException: Attempt to invoke interface method 'boolean okhttp3.WebSocket.send(java.lang.String)' on a null object reference at rx.internal.util.InternalObservableUtils$ErrorNotImplementedAction.call(InternalObservableUtils.java:386) at rx.internal.util.InternalObservableUtils$ErrorNotImplementedAction.call(InternalObservableUtils.java:383) at rx.internal.util.ActionSubscriber.onError(ActionSubscriber.java:44) at rx.observers.SafeSubscriber._onError(SafeSubscriber.java:153) at rx.observers.SafeSubscriber.onError(SafeSubscriber.java:115) at rx.exceptions.Exceptions.throwOrReport(Exceptions.java:212) at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:139) at rx.internal.producers.SingleProducer.request(SingleProducer.java:65) at rx.Subscriber.setProducer(Subscriber.java:209) at rx.Subscriber.setProducer(Subscriber.java:205) at rx.internal.operators.OperatorSingle$ParentSubscriber.onCompleted(OperatorSingle.java:110) at rx.internal.operators.OperatorTake$1.onNext(OperatorTake.java:80) at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:77) at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:224) at rx.android.schedulers.LooperScheduler$ScheduledAction.run(LooperScheduler.java:107) at android.os.Handler.handleCallback(Handler.java:751)  at android.os.Handler.dispatchMessage(Handler.java:95)  at android.os.Looper.loop(Looper.java:154)  at android.app.ActivityThread.main(ActivityThread.java:6119)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)  Caused by: java.lang.NullPointerException: Attempt to invoke interface method 'boolean okhttp3.WebSocket.send(java.lang.String)' on a null object reference at com.dhh.websocket.RxWebSocketUtil$8.call(RxWebSocketUtil.java:268) at com.dhh.websocket.RxWebSocketUtil$8.call(RxWebSocketUtil.java:265) at rx.internal.util.ActionSubscriber.onNext(ActionSubscriber.java:39) at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:134) at rx.internal.producers.SingleProducer.request(SingleProducer.java:65)  at rx.Subscriber.setProducer(Subscriber.java:209)  at rx.Subscriber.setProducer(Subscriber.java:205)  at rx.internal.operators.OperatorSingle$ParentSubscriber.onCompleted(OperatorSingle.java:110)  at rx.internal.operators.OperatorTake$1.onNext(OperatorTake.java:80)  at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:77)  at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:224)  at rx.android.schedulers.LooperScheduler$ScheduledAction.run(LooperScheduler.java:107)  at android.os.Handler.handleCallback(Handler.java:751)  at android.os.Handler.dispatchMessage(Handler.java:95)  at android.os.Looper.loop(Looper.java:154)  at android.app.ActivityThread.main(ActivityThread.java:6119)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)  按照例子加入代码 在重连的时候,多次调用asyncsend方法 报错crash

dhhAndroid commented 6 years ago

如果要频繁发送数据,尽量保证WebSocket是开启状态,使用send方法发送,asyncsend发送,会重复调用开关WebSocket,所以不建议,频繁发送数据时调用。

liliangzdh commented 4 years ago

没有 asyncsend 发送。只是用 send。也会出现这样的 闪退日志。