Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase侦听器不在Android设备上工作(有时)_Javascript_Reactjs_Firebase_React Native_Firebase Realtime Database - Fatal编程技术网

Javascript Firebase侦听器不在Android设备上工作(有时)

Javascript Firebase侦听器不在Android设备上工作(有时),javascript,reactjs,firebase,react-native,firebase-realtime-database,Javascript,Reactjs,Firebase,React Native,Firebase Realtime Database,我的firebase监听器在iOS(设备和模拟器)和Android模拟器上工作得非常好 当连接到真正的android设备时,监听器有时不会启动 我如何进行调试 当firebase侦听器不工作时,firebase auth()函数仍在工作。因此,我可以对用户进行身份验证,但无法使用侦听器上的检索数据 比如说, firebase.auth().signInAndRetrieveDataWithEmailAndPassword(email, pass) .then(() => { con

我的firebase监听器在iOS(设备和模拟器)和Android模拟器上工作得非常好

当连接到真正的android设备时,监听器有时不会启动

我如何进行调试

当firebase侦听器不工作时,firebase auth()函数仍在工作。因此,我可以对用户进行身份验证,但无法使用侦听器上的检索数据

比如说,

firebase.auth().signInAndRetrieveDataWithEmailAndPassword(email, pass)
.then(() => {
    console.log('this prints every time');
})
.catch(function (error) {
    console.log(error);
});

firebase.auth().onAuthStateChanged((user) => {
    if (user) {
        firebase.database().ref().on('value', (snapshot) => {
            console.log('This never prints')
        });
    }
}
侦听器上的.on不会启动,但是身份验证工作

这种情况有时会发生,通常要等上几个小时,然后再试一次,这样就不会发生了。然后它又会回来

编辑:在应用程序打开的情况下等待了一个多小时后,firebase侦听器实际上工作了。但是,花了一个多小时。仍然不知道为什么…

09-23 22:25:47.920 21028-21146/com.starco.starmsg D/PersistentConnection: pc_0 - Trying to fetch auth token
09-23 22:25:47.923 21028-21146/com.starco.starmsg D/PersistentConnection: pc_0 - Successfully fetched token, opening connection
09-23 22:25:47.924 21028-21146/com.starco.starmsg D/Connection: conn_5 - Opening a connection
09-23 22:25:49.163 21028-21372/com.starco.starmsg V/FA: Inactivity, disconnecting from the service
09-23 22:26:17.925 21028-21146/com.starco.starmsg D/WebSocket: ws_5 - timed out on connect
    ws_5 - closed
    ws_5 - closing itself
09-23 22:26:17.925 21028-21146/com.starco.starmsg D/Connection: conn_5 - Realtime connection failed
    conn_5 - closing realtime connection
09-23 22:26:17.925 21028-21146/com.starco.starmsg D/PersistentConnection: pc_0 - Got on disconnect due to OTHER
09-23 22:26:17.926 21028-21146/com.starco.starmsg D/PersistentConnection: pc_0 - Scheduling connection attempt
09-23 22:26:17.926 21028-21146/com.starco.starmsg D/ConnectionRetryHelper: Scheduling retry in 2547ms
09-23 22:26:18.991 21028-21146/com.starco.starmsg D/WebSocket: ws_5 - WebSocket error.
    bfz: error while creating secure socket to wss://star-msg.firebaseio.com/.ws?ns=star-msg&v=5
        at bfw.d(:com.google.android.gms.dynamite_dynamitemodulesc@13280045@13.2.80 (040304-211705629):86)
        at bfx.run(:com.google.android.gms.dynamite_dynamitemodulesc@13280045@13.2.80 (040304-211705629):3)
        at java.lang.Thread.run(Thread.java:761)
     Caused by: java.net.ConnectException: Connection timed out
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:334)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
        at java.net.Socket.connect(Socket.java:586)
        at com.android.org.conscrypt.OpenSSLSocketImpl.connect(OpenSSLSocketImpl.java:265)
        at com.android.org.conscrypt.OpenSSLSocketImpl.connect(OpenSSLSocketImpl.java:252)
        at java.net.Socket.<init>(Socket.java:427)
        at java.net.Socket.<init>(Socket.java:210)
        at javax.net.ssl.SSLSocket.<init>(SSLSocket.java:906)
        at com.android.org.conscrypt.OpenSSLSocketImpl.<init>(OpenSSLSocketImpl.java:192)
        at com.android.org.conscrypt.OpenSSLSocketFactoryImpl.createSocket(OpenSSLSocketFactoryImpl.java:68)
        at bfw.d(:com.google.android.gms.dynamite_dynamitemodulesc@13280045@13.2.80 (040304-211705629):70)
        at bfx.run(:com.google.android.gms.dynamite_dynamitemodulesc@13280045@13.2.80 (040304-211705629):3) 
        at java.lang.Thread.run(Thread.java:761) 
编辑:在Android Studio的logcat中找到这些日志。同一组消息会反复出现。

09-23 22:25:47.920 21028-21146/com.starco.starmsg D/PersistentConnection: pc_0 - Trying to fetch auth token
09-23 22:25:47.923 21028-21146/com.starco.starmsg D/PersistentConnection: pc_0 - Successfully fetched token, opening connection
09-23 22:25:47.924 21028-21146/com.starco.starmsg D/Connection: conn_5 - Opening a connection
09-23 22:25:49.163 21028-21372/com.starco.starmsg V/FA: Inactivity, disconnecting from the service
09-23 22:26:17.925 21028-21146/com.starco.starmsg D/WebSocket: ws_5 - timed out on connect
    ws_5 - closed
    ws_5 - closing itself
09-23 22:26:17.925 21028-21146/com.starco.starmsg D/Connection: conn_5 - Realtime connection failed
    conn_5 - closing realtime connection
09-23 22:26:17.925 21028-21146/com.starco.starmsg D/PersistentConnection: pc_0 - Got on disconnect due to OTHER
09-23 22:26:17.926 21028-21146/com.starco.starmsg D/PersistentConnection: pc_0 - Scheduling connection attempt
09-23 22:26:17.926 21028-21146/com.starco.starmsg D/ConnectionRetryHelper: Scheduling retry in 2547ms
09-23 22:26:18.991 21028-21146/com.starco.starmsg D/WebSocket: ws_5 - WebSocket error.
    bfz: error while creating secure socket to wss://star-msg.firebaseio.com/.ws?ns=star-msg&v=5
        at bfw.d(:com.google.android.gms.dynamite_dynamitemodulesc@13280045@13.2.80 (040304-211705629):86)
        at bfx.run(:com.google.android.gms.dynamite_dynamitemodulesc@13280045@13.2.80 (040304-211705629):3)
        at java.lang.Thread.run(Thread.java:761)
     Caused by: java.net.ConnectException: Connection timed out
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:334)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
        at java.net.Socket.connect(Socket.java:586)
        at com.android.org.conscrypt.OpenSSLSocketImpl.connect(OpenSSLSocketImpl.java:265)
        at com.android.org.conscrypt.OpenSSLSocketImpl.connect(OpenSSLSocketImpl.java:252)
        at java.net.Socket.<init>(Socket.java:427)
        at java.net.Socket.<init>(Socket.java:210)
        at javax.net.ssl.SSLSocket.<init>(SSLSocket.java:906)
        at com.android.org.conscrypt.OpenSSLSocketImpl.<init>(OpenSSLSocketImpl.java:192)
        at com.android.org.conscrypt.OpenSSLSocketFactoryImpl.createSocket(OpenSSLSocketFactoryImpl.java:68)
        at bfw.d(:com.google.android.gms.dynamite_dynamitemodulesc@13280045@13.2.80 (040304-211705629):70)
        at bfx.run(:com.google.android.gms.dynamite_dynamitemodulesc@13280045@13.2.80 (040304-211705629):3) 
        at java.lang.Thread.run(Thread.java:761) 
编辑:使用移动热点连接到互联网时,不会出现问题…

09-23 22:25:47.920 21028-21146/com.starco.starmsg D/PersistentConnection: pc_0 - Trying to fetch auth token
09-23 22:25:47.923 21028-21146/com.starco.starmsg D/PersistentConnection: pc_0 - Successfully fetched token, opening connection
09-23 22:25:47.924 21028-21146/com.starco.starmsg D/Connection: conn_5 - Opening a connection
09-23 22:25:49.163 21028-21372/com.starco.starmsg V/FA: Inactivity, disconnecting from the service
09-23 22:26:17.925 21028-21146/com.starco.starmsg D/WebSocket: ws_5 - timed out on connect
    ws_5 - closed
    ws_5 - closing itself
09-23 22:26:17.925 21028-21146/com.starco.starmsg D/Connection: conn_5 - Realtime connection failed
    conn_5 - closing realtime connection
09-23 22:26:17.925 21028-21146/com.starco.starmsg D/PersistentConnection: pc_0 - Got on disconnect due to OTHER
09-23 22:26:17.926 21028-21146/com.starco.starmsg D/PersistentConnection: pc_0 - Scheduling connection attempt
09-23 22:26:17.926 21028-21146/com.starco.starmsg D/ConnectionRetryHelper: Scheduling retry in 2547ms
09-23 22:26:18.991 21028-21146/com.starco.starmsg D/WebSocket: ws_5 - WebSocket error.
    bfz: error while creating secure socket to wss://star-msg.firebaseio.com/.ws?ns=star-msg&v=5
        at bfw.d(:com.google.android.gms.dynamite_dynamitemodulesc@13280045@13.2.80 (040304-211705629):86)
        at bfx.run(:com.google.android.gms.dynamite_dynamitemodulesc@13280045@13.2.80 (040304-211705629):3)
        at java.lang.Thread.run(Thread.java:761)
     Caused by: java.net.ConnectException: Connection timed out
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:334)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
        at java.net.Socket.connect(Socket.java:586)
        at com.android.org.conscrypt.OpenSSLSocketImpl.connect(OpenSSLSocketImpl.java:265)
        at com.android.org.conscrypt.OpenSSLSocketImpl.connect(OpenSSLSocketImpl.java:252)
        at java.net.Socket.<init>(Socket.java:427)
        at java.net.Socket.<init>(Socket.java:210)
        at javax.net.ssl.SSLSocket.<init>(SSLSocket.java:906)
        at com.android.org.conscrypt.OpenSSLSocketImpl.<init>(OpenSSLSocketImpl.java:192)
        at com.android.org.conscrypt.OpenSSLSocketFactoryImpl.createSocket(OpenSSLSocketFactoryImpl.java:68)
        at bfw.d(:com.google.android.gms.dynamite_dynamitemodulesc@13280045@13.2.80 (040304-211705629):70)
        at bfx.run(:com.google.android.gms.dynamite_dynamitemodulesc@13280045@13.2.80 (040304-211705629):3) 
        at java.lang.Thread.run(Thread.java:761) 
09-23 22:25:47.920 21028-21146/com.starco.starmsg D/PersistentConnection:pc_0-正在尝试获取身份验证令牌
09-23 22:25:47.923 21028-21146/com.starco.starmsg D/PersistentConnection:pc_0-已成功获取令牌,正在打开连接
09-23 22:25:47.924 21028-21146/com.starco.starmsg D/连接:conn_5-打开连接
09-23 22:25:49.163 21028-21372/com.starco.starmsg V/FA:不活动,正在断开与服务的连接
09-23 22:26:17.925 21028-21146/com.starco.starmsg D/WebSocket:ws_5-连接时超时
ws_5-关闭
ws_5-自动关闭
09-23 22:26:17.925 21028-21146/com.starco.starmsg D/连接:conn_5-实时连接失败
conn_5-关闭实时连接
09-23 22:26:17.925 21028-21146/com.starco.starmsg D/PersistentConnection:pc_0-由于其他原因导致断开连接
09-23 22:26:17.926 21028-21146/com.starco.starmsg D/PersistentConnection:pc_0-计划连接尝试
09-23 22:26:17.926 21028-21146/com.starco.starmsg D/ConnectionRetryHelper:计划在2547毫秒内重试
09-23 22:26:18.991 21028-21146/com.starco.starmsg D/WebSocket:ws_5-WebSocket错误。
bfz:创建到的安全套接字时出错wss://star-msg.firebaseio.com/.ws?ns=star-msg&v=5
在bfw.d(:com.google.android.gms.dynamite_dynamitemodulesc@13280045@13.2.80 (040304-211705629):86)
在bfx.run(:com.google.android.gms.dynamite_dynamitemodulesc@13280045@13.2.80 (040304-211705629):3)
运行(Thread.java:761)
原因:java.net.ConnectException:连接超时
位于java.net.PlainSocketImpl.socketConnect(本机方法)
位于java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:334)
位于java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196)
位于java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
位于java.net.socksocketimpl.connect(socksocketimpl.java:356)
位于java.net.Socket.connect(Socket.java:586)
访问com.android.org.conscrypt.OpenSSLSocketImpl.connect(OpenSSLSocketImpl.java:265)
访问com.android.org.conscrypt.OpenSSLSocketImpl.connect(OpenSSLSocketImpl.java:252)
位于java.net.Socket(Socket.java:427)
位于java.net.Socket。(Socket.java:210)
位于javax.net.ssl.SSLSocket(SSLSocket.java:906)
在com.android.org.conscrypt.OpenSSLSocketImpl.(OpenSSLSocketImpl.java:192)
位于com.android.org.conscrypt.opensslsocketfactorympl.createSocket(opensslsocketfactorympl.java:68)
在bfw.d(:com.google.android.gms.dynamite_dynamitemodulesc@13280045@13.2.80 (040304-211705629):70)
在bfx.run(:com.google.android.gms.dynamite_dynamitemodulesc@13280045@13.2.80 (040304-211705629):3) 
运行(Thread.java:761)

安全规则是否需要身份验证才能以您显示的方式访问数据库?是的,需要身份验证。但是,在我的实际代码中,我用firebase.auth().onAuthStateChanged((用户)=>{/.on listener here})包装了firebase侦听器。我还在我的帖子中添加了一些额外的细节。我能想到的唯一区别是auth数据通过常规HTTPS请求,而实时数据库的流量通过(web)传输套接字。你是否在防火墙或代理之后,这可能会影响流量?这可能是值得的,并检查logcat的输出,以提示连接问题的原因。我用logcat的输出更新了我的帖子。这是在全新的Alcatel CameoX w/Android 7.0设备上运行的。此外,当我切换到移动热点wifi时,问题em消失了。这表明我的互联网出现了问题,但在iOS设备上,这个问题没有发生。很明显,Android出现了问题。我看到你得到了一个超时。增加timout值,或者在出现超时时尝试建立重试逻辑。