Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.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
Firebase网络连接丢失断开处理程序故障_Firebase_Disconnect_Reconnect - Fatal编程技术网

Firebase网络连接丢失断开处理程序故障

Firebase网络连接丢失断开处理程序故障,firebase,disconnect,reconnect,Firebase,Disconnect,Reconnect,我在尝试处理Firebase中的网络连接丢失重新连接时遇到问题 当重新建立连接时,它会正常工作,并再次将用户数据写入firebase,但随后会立即将其删除。据我所知,onDisconnect.remove()函数的启动似乎有问题 这是我的代码,也许有人可以发现问题,或者提出更好的方法来处理网络连接丢失: var userListRef = new Firebase('https://myrecovery.firebaseIO.com/tsmusers/'); var meetin

我在尝试处理Firebase中的网络连接丢失重新连接时遇到问题

当重新建立连接时,它会正常工作,并再次将用户数据写入firebase,但随后会立即将其删除。据我所知,onDisconnect.remove()函数的启动似乎有问题

这是我的代码,也许有人可以发现问题,或者提出更好的方法来处理网络连接丢失:

    var userListRef = new Firebase('https://myrecovery.firebaseIO.com/tsmusers/');
    var meetingId = $('#meetingIdInput').val();
    var myUserId = $('#myIdInput').val();
    var userName = $('#nameInput').val();
    var avatar = $('#myImage').val();
    var myUserRef = new Firebase('https://myrecovery.firebaseIO.com/tsmusers/' + meetingId + '/users/' + myUserId);
    var usersRef = new Firebase('https://myrecovery.firebaseIO.com/tsmusers/' + meetingId + '/users');
    var connectedRef = new Firebase("https://myrecovery.firebaseIO.com/.info/connected");

    // CHECK FIREBASE PRESENSE
    connectedRef.on("value", function(isOnline) {
        if (isOnline.val() === true) {
            console.log('Connected to Firebase');
            // FIRE FUNCTION TO CONNECT TO THE MEETING
            connectToMeeting();
        } else {
            console.log('Disconnected from Firebase');
            // REMOVE USER FROM FIREBASE ON DISCONNECT
            myUserRef.onDisconnect().remove();
        }
    });

    // CONNECT TO THE MEETING
    function connectToMeeting() {
        // ADD USER TO FIREBASE MEETING->USER TABLE
        myUserRef.set({userId: myUserId, userName: userName, avatar: avatar});

        // CONNECT TO OPENTOK
        session.connect(apiKey, token);
    }

    // ADD USER TO ATTENDEE SECTION ON CONNECTION
    usersRef.on('child_added', function(snapshot) {
        var user = snapshot.val();
        displayConnectedUser(user.userId, user.avatar, user.userName);
    });
    function displayConnectedUser(userId, avatar, userName) {
        $('#attendees').prepend('<div id="attendee_' + userId + '" class="attendee_box">' + avatar + '<br />' + userName + '</div>');
    }
var userListRef=new Firebase('https://myrecovery.firebaseIO.com/tsmusers/');
var meetingId=$('#meetingIdInput').val();
var myUserId=$('#myIdInput').val();
var userName=$('#nameInput').val();
var avatar=$('#myImage').val();
var myUserRef=new Firebase('https://myrecovery.firebaseIO.com/tsmusers/“+meetingId+”/users/'+myUserId);
var usersRef=new Firebase('https://myrecovery.firebaseIO.com/tsmusers/“+meetingId+”/users”);
var connectedRef=新Firebase(“https://myrecovery.firebaseIO.com/.info/connected");
//检查FIREBASE是否存在
connectedRef.on(“值”,函数(isOnline){
if(isOnline.val()==true){
console.log(“连接到Firebase”);
//启动连接到会议的功能
连接到会议();
}否则{
console.log(“与Firebase断开连接”);
//在断开连接时从FIREBASE中删除用户
myUserRef.onDisconnect().remove();
}
});
//连接到会议
函数connectToMeeting(){
//将用户添加到FIREBASE会议->用户表
myUserRef.set({userId:myUserId,userName:userName,avatar:avatar});
//连接到OPENTOK
连接(apiKey、令牌);
}
//将用户添加到有关连接的与会者部分
usersRef.on('child_added',函数(快照){
var user=snapshot.val();
displayConnectedUser(user.userId、user.avatar、user.userName);
});
函数displayConnectedUser(用户ID、化身、用户名){
$(“#与会者”).prepend(“+avatar+”
“+userName+”); }
联机时必须使用onDisconnect()。客户端脱机时无法与服务器通信,因此在下次联机之前,onDisconnect()操作不会发生。您可以将代码更改为:

connectedRef.on(“值”,函数(isOnline){
if(isOnline.val()==true){
console.log(“连接到Firebase”);
//启动连接到会议的功能
连接到会议();
//在断开连接时从FIREBASE中删除用户
myUserRef.onDisconnect().remove();
}
}

希望这能有所帮助!

它确实有效,但在onDisconnect删除后,我不得不对代码进行更改以重新编写用户的数据,但效果很好。谢谢!