本文介绍了Android,Firebase登录需要一点时间,并发生WebSocketException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 authWithCustomToken 方法使用Firebase登录。登录大约需要5秒钟或更长时间。我启用了Firebase日志( setLogLevel(Logger.Level.DEBUG))进行监控是否存在任何问题。日志是在这里(我修剪了一下,如果有必要,我可以给它一个链接):
$ b ps:android firebase客户端版本是2.5.0

  ws_0  -  websocket打开
conn_0 - 得到控制信息:{t = r,d = s-softlayer .firebaseio.com}
conn_0 - 重置;查杀tbf.firebaseio.com的连接;更新internalHost到s-softlayer.firebaseio.com
conn_0 - 关闭实时连接
handleIncomingFrame完整帧:{d = {t = r,d = s-softlayer.firebaseio.com},t = c}
ws_0 - 正在关闭websocket
ws_0 - 发生错误
com.firebase.tubesock.WebSocketException:IO错误
在com.firebase.tubesock.WebSocketReceiver.run(WebSocketReceiver。 java:78)
at com.firebase.tubesock.WebSocket.runReader(WebSocket.java:372)
at com.firebase.tubesock.WebSocket.access $ 000(WebSocket.java:30)
在com.firebase.tubesock.WebSocket $ 2.run(WebSocket.java:108)
在java.lang.Thread.run(Thread.java:818)
导致:java.io.EOFException
at libcore.io.Streams.readFully(Streams.java:83)
at java.io.DataInputStream.readFully(DataInputStream.java:99)
at com.firebase.tubesock.WebSocketReceiver .read(WebSocketReceiver.java:141)
at com.firebase.tubesock.WebSocketReceiver.run (WebSocketReceiver.java:34)
at com.firebase.tubesock.WebSocket.runReader(WebSocket.java:372)
at com.firebase.tubesock.WebSocket.access $ 000(WebSocket.java:30)
at com.firebase.tubesock.WebSocket $ 2.run(WebSocket.java:108)
at java.lang.Thread.run(Thread.java:818)

ws_0 - | IO错误|
ws_0 - 关闭

conn_1 - 打开连接
ws_1 - websocket打开
ws_1 - handleIncomingFrame完成框架:{d = {t = r,d = s- dal5-nss-19.firebaseio.com},t = c}
conn_1 - 得到控制信息:{t = r,d = s-dal5-nss-19.firebaseio.com}
conn_1 - 得到了重置;杀死与s-softlayer.firebaseio.com的连接;更新internalHost到s-dal5-nss-19.firebaseio.com
conn_1 - 关闭实时连接
ws_1 - websocket正在关闭
ws_1 - 出错
com.firebase。在web.config中的错误
在Web.config中的错误
(WebSocketReceiver.java:78)
...
导致:java.io.EOFException
在libcore.io.Streams.readFully(Streams.java:83)
...

ws_1 - | IO错误|
ws_1 - 已关闭
conn_2 - 打开连接
ws_1 - 发生错误
com.firebase.tubesock.WebSocketException:IO异常
...
ws_1 - | IO Exception |
ws_2 - websocket打开
conn_2 - 得到控制消息:{t = h,d = {ts = 1452086065546,v = 5,h = s-dal5-nss-19.firebaseio.com,s = EaQhQ7iRAjeWVxvzBJEFD7k4TKFsmrms}}
conn_2 - 建立实时连接

这个日志是否有错误?



我应该忽略吗?如果是的话,为什么登录时间太长?

解决方案

输出中没有信息来确定任何时间影响。但据我所知,流量看起来很正常。您的前两个连接正在重定向。然后第三个连接到达正确的服务器,它以实时连接建立作为响应。

I'm using authWithCustomToken method to login with Firebase. Login takes approximately 5 seconds or more. I enabled Firebase log (setLogLevel(Logger.Level.DEBUG)) for monitoring is there a any problem. Log is here (I trimmed a bit, if necessary i can give a link for it):

PS: android firebase client version is 2.5.0

ws_0 - websocket opened
conn_0 - Got control message: {t=r, d=s-softlayer.firebaseio.com}
conn_0 - Got a reset; killing connection to tbf.firebaseio.com; Updating internalHost to s-softlayer.firebaseio.com
conn_0 - closing realtime connection
handleIncomingFrame complete frame: {d={t=r, d=s-softlayer.firebaseio.com}, t=c}
ws_0 - websocket is being closed
ws_0 - had an error
    com.firebase.tubesock.WebSocketException: IO Error
        at com.firebase.tubesock.WebSocketReceiver.run(WebSocketReceiver.java:78)
        at com.firebase.tubesock.WebSocket.runReader(WebSocket.java:372)
        at com.firebase.tubesock.WebSocket.access$000(WebSocket.java:30)
        at com.firebase.tubesock.WebSocket$2.run(WebSocket.java:108)
        at java.lang.Thread.run(Thread.java:818)
    Caused by: java.io.EOFException
        at libcore.io.Streams.readFully(Streams.java:83)
        at java.io.DataInputStream.readFully(DataInputStream.java:99)
        at com.firebase.tubesock.WebSocketReceiver.read(WebSocketReceiver.java:141)
        at com.firebase.tubesock.WebSocketReceiver.run(WebSocketReceiver.java:34)
        at com.firebase.tubesock.WebSocket.runReader(WebSocket.java:372) 
        at com.firebase.tubesock.WebSocket.access$000(WebSocket.java:30) 
        at com.firebase.tubesock.WebSocket$2.run(WebSocket.java:108) 
        at java.lang.Thread.run(Thread.java:818) 

ws_0 - |IO Error|
ws_0 - closed

conn_1 - Opening a connection
ws_1 - websocket opened
ws_1 - handleIncomingFrame complete frame: {d={t=r, d=s-dal5-nss-19.firebaseio.com}, t=c}
conn_1 - Got control message: {t=r, d=s-dal5-nss-19.firebaseio.com}
conn_1 - Got a reset; killing connection to s-softlayer.firebaseio.com; Updating internalHost to s-dal5-nss-19.firebaseio.com
conn_1 - closing realtime connection
ws_1 - websocket is being closed
ws_1 - had an error
    com.firebase.tubesock.WebSocketException: IO Error
        at com.firebase.tubesock.WebSocketReceiver.run(WebSocketReceiver.java:78)
        ...
    Caused by: java.io.EOFException
        at libcore.io.Streams.readFully(Streams.java:83)
        ...

ws_1 - |IO Error|
ws_1 - closed
conn_2 - Opening a connection
ws_1 - had an error
    com.firebase.tubesock.WebSocketException: IO Exception
    ...
ws_1 - |IO Exception|
ws_2 - websocket opened
conn_2 - Got control message: {t=h, d={ts=1452086065546, v=5, h=s-dal5-nss-19.firebaseio.com, s=EaQhQ7iRAjeWVxvzBJEFD7k4TKFsmrms}}
conn_2 - realtime connection established

Is this log saying there is an error?

Should I ignore it? If yes, why login takes too long?

解决方案

There is no information in the output to determine any timing impact. But as far as I can tell the flow looks normal. Your first two connections are being redirected. The third connection then reaches the correct server, which responds with "realtime connection established".

这篇关于Android,Firebase登录需要一点时间,并发生WebSocketException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-20 03:24