Firebase 연결이 끊어 지거나 회복되었는지 감지
현재 Firebase 제품 내에서 서버 연결이 끊어 지거나 회복되었는지 감지하는 전략이 있습니까?
모바일 장치에 대한 몇 가지 오프라인 상황을 고려 중이며 Firebase 데이터 영역을 사용할 수있는시기를 확인할 수있는 신뢰할 수있는 방법을 원합니다.
이것은 일반적으로 요청되는 기능이며이를 수행 할 수 있도록 API 업데이트를 방금 출시했습니다!
var firebaseRef = new Firebase('http://INSTANCE.firebaseio.com');
firebaseRef.child('.info/connected').on('value', function(connectedSnap) {
if (connectedSnap.val() === true) {
/* we're connected! */
} else {
/* we're disconnected! */
}
});
전체 문서는 https://firebase.google.com/docs/database/web/offline-capabilities 에서 볼 수 있습니다 .
업데이트 됨 : 많은 현재 상태 관련 기능의 경우 클라이언트가 온라인 또는 오프라인 상태를 알면 유용합니다. Firebase 실시간 데이터베이스 클라이언트는 클라이언트의 연결 상태가 변경 될 때마다 업데이트되는 /.info/connected에 특별한 위치를 제공합니다. 다음은 그 예입니다.
DatabaseReference connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected");
connectedRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
boolean connected = snapshot.getValue(Boolean.class);
if (connected) {
System.out.println("connected");
} else {
System.out.println("not connected");
}
}
@Override
public void onCancelled(DatabaseError error) {
System.err.println("Listener was cancelled");
}
});
나는 이것이 지난 두 달 동안 바뀌 었다고 생각한다. 현재 지침은 https://firebase.google.com/docs/database/web/offline-capabilities입니다.
요약하면 :
var presenceRef = firebase.database().ref("disconnectmessage");
// Write a string when this client loses connection
presenceRef.onDisconnect().set("I disconnected!");
과:
var connectedRef = firebase.database().ref(".info/connected");
connectedRef.on("value", function(snap) {
if (snap.val() === true) {
alert("connected");
} else {
alert("not connected");
}
});
나는 참조가 어떻게 설정되는지, 그것이 의미하는 바에 대해 많이 알지 못한다는 것을 인정할 것입니다 (당신이 그것들을 허공에서 만들고 있습니까, 아니면 미리 그것을 미리 만들어야하나요?) 또는 그 중 어떤 것이 무언가를 유발할 것인지 프런트 엔드에있는 것과는 반대로 서버에 있지만이 링크를 읽을 때 링크가 여전히 최신 상태 인 경우 조금 더 읽으면 도움이 될 수 있습니다.
Android의 경우 호출 된 단일 함수로 사용자를 오프라인으로 만들 수 있습니다. onDisconnect()
네트워크 연결이 끊어 지거나 사용자 가 인터넷 연결이 끊어 지면 사용자가 자동으로 오프라인 상태가되어야하는 채팅 앱 중 하나에서이 작업을 수행했습니다.
DatabaseReference presenceRef = FirebaseDatabase.getInstance().getReference("USERS/24/online_status");
presenceRef.onDisconnect().setValue(0);
On disconnecting from network Here I am making online_status
0 of user whose Id is 24 in firebase.
getReference("USERS/24/online_status")
is the path to the value you need to update on offline/online.
You can read about it in offline capabilities
Note that firebase takes time around 2-10 minutes to execute onDisconnect() function.
The suggested solution didn't work for me, so I decided to check the connection by writing and reading 'health/check' value. This is the code:
const config = {databaseURL: `https://${projectName.trim()}.firebaseio.com/`};
//if app was already initialised delete it
if (firebase.apps.length) {
await firebase.app().delete();
}
// initialise app
let cloud = firebase.initializeApp(config).database();
// checking connection with the app/database
let connectionRef = cloud.ref('health');
connectionRef.set('check')
.then(() => {
return connectionRef.once("value");
})
.then(async (snap) => {
if (snap.val() === 'check') {
// clear the check input
await connectionRef.remove();
// do smth here becasue it works
}
});
참고URL : https://stackoverflow.com/questions/11351689/detect-if-firebase-connection-is-lost-regained
'developer tip' 카테고리의 다른 글
최종 64 비트 컴파일러를 위해 32 비트 Delphi 프로그램을 어떻게 준비해야합니까? (0) | 2020.12.08 |
---|---|
Ruby에서“잘못된 인수 개수 (0은 1)”가 무엇을 의미합니까? (0) | 2020.12.08 |
MiniTest에서 어떻게 스텁을 수행합니까? (0) | 2020.12.07 |
토스트에 이미지를 추가 하시겠습니까? (0) | 2020.12.07 |
CSS 표시 : 인라인 블록이 여백 상단을 허용하지 않습니까? (0) | 2020.12.07 |