±âŸ(framework)
2018.03.21 / 01:53
Firebase Web äÆÃ¾Û ¸¸µé±â - Realtime Database¸¦ ÀÌ¿ëÇÑ Ã¤Æñâ´É ±¸Çö - Á¢¼Ó ÁßÀÎ À¯Àú Ç¥½ÃÇϱâ
ÈÞ°í
Ãßõ ¼ö 202
Realtime Database ¿¡´Â »ç¿ëÀÚÀÇ Á¢¼Ó»óÅ°¡ ¹Ù²ð ¶§¸¶´Ù µ¥ÀÌÅÍ°¡ º¯°æÀÌ µÇ´Â Ư¼öÇÑ À§Ä¡°¡ ÀÖ½À´Ï´Ù. '/.info/connected' À§Ä¡ÀÔ´Ï´Ù. ÇØ´ç À§Ä¡¸¦ È°¿ëÇÏ¿© Á¢¼ÓÀÌ µÇ¸é À¯Àú¸®½ºÆ® ȸ鿡¼ Á¢¼ÓÇÏ¿´À½À» Ç¥½ÃÇØÁÖ´Â ±â´ÉÀ» ±¸ÇöÇØ º¸°Ú½À´Ï´Ù.
Á¢¼ÓÀ» Çϰųª Á¢¼ÓÀ» ²÷°Ô µÇ¸é UsersConnection À§Ä¡¿¡ µ¥ÀÌÅ͸¦ ÀÔ·ÂÇÏ´Â Äڵ带 ÀÛ¼ºÇÏ°Ú½À´Ï´Ù. ¾Æ·¡ÀÇ Äڵ带 ÀÛ¼ºÇØ ÁÖ¼¼¿ä.
·Î±×ÀÎ ÈÄ checkOnline ¸Þ¼Òµå°¡ ½ÇÇàµË´Ï´Ù. Á¢¼ÓÀ» ÇÏ°Ô µÇ¸é ¾Õ¼ ¾ð±ÞÇÑ '/.info/connected' À§Ä¡¿¡ true °ªÀÌ ÀԷµ˴ϴÙ. ¾Æ·¡ÀÇ ÄÚµå´Â '/.info/connected' À§Ä¡ÀÇ µ¥ÀÌÅÍ º¯È¸¦ °¨ÁöÇÏ¿©, true °ªÀÌ µé¾î¿Ô´ÂÁö È®ÀÎÇÑ ÈÄ UsersConnection ¾Æ·¡ ÀÚ½ÅÀÇ UID°ª ¾Æ·¡ true °ªÀ» ÀÔ·ÂÇÕ´Ï´Ù.
var connectedRef = this.database.ref('.info/connected');
connectedRef.on('value', function(snap) {
if (snap.val() === true) {
myConnectionsRef.set(true);
... (»ý·«)
}
});
Á¢¼ÓÀ» ÇÑ ÈÄ¿¡ µ¥ÀÌÅÍ ÀÔ·ÂÀº ÇÏ´Â°Ç Å¬¶óÀ̾ðÆ® Äڵ尡 ½ÇÇàÀ» ÇÏ°ÔµÇ¾î °ªÀ» ÀÔ·ÂÇÏ¸é µÇÁö¸¸, ºê¶ó¿ìÀú¸¦ ²¨¹ö¸®¸é Äڵ尡 ½ÇÇàÀÌ ¾ÈµÇ´Âµ¥ ¾î¶»°Ô µ¥ÀÌÅ͸¦ ÀÔ·ÂÀ» ÇÒ±î¿ä? Realtime Database ¿¡¼´Â onDisconnect¶ó´Â ¸Þ¼Òµå¸¦ Á¦°øÇÕ´Ï´Ù. Á¢¼ÓÀÌ ²÷°åÀ» ¶§ true°ªÀ» ÀÔ·ÂÇß´ø À§Ä¡¿¡ false¸¦ ÀÔ·ÂÇÏ°í, lastOnlineÇʵ忡´Â ¼¹ö½Ã°£À» ±â·ÏÇÕ´Ï´Ù.
myConnectionsRef.onDisconnect().set(false);
lastOnlineRef.onDisconnect().set(firebase.database.ServerValue.TIMESTAMP);
ÀÌÁ¦ Á¢¼Ó ±â·ÏÀ» ÀúÀåÇÏ´Â ÄÚµå´Â ¿Ï·áµÇ¾ú°í, UsersConnection À§Ä¡ÀÇ µ¥ÀÌÅÍ º¯°æÀ» °¨ÁöÇÏ¿© À¯Àú¸®½ºÆ® ȸ鿡 Ç¥½ÃÇÏ´Â Äڵ带 ÀÛ¼ºÇغ¸°Ú½À´Ï´Ù.
¿ì¼± loadUserList ¸Þ¼Òµå¸¦ ¼öÁ¤ÇÕ´Ï´Ù. userList°¡ load°¡ ¿Ï·áµÇ¸é loadOnlineStatus ¸Þ¼Òµå¸¦ È£ÃâÇÕ´Ï´Ù.
var cbCompleteUserList = function(){
this.loadOnlineStatus();
}
userRef.orderByChild("userName")
.once('value', this.getUserList.bind(this))
.then(cbCompleteUserList.bind(this));
loadOnlineStatus¸Þ¼Òµå´Â UsersConnection À§Ä¡¿¡ µ¥ÀÌÅÍ º¯°æÀ» °¨ÁöÇؼ »õ·Ó°Ô Ãß°¡µÇ°Å³ª º¯°æµÇ¾úÀ» ½Ã¿¡ µ¥ÀÌÅ͸¦ È®ÀÎÇÏ¿© Á¢¼Ó¿©ºÎ ¾ÆÀÌÄÜÀ» ³ëÃâ½ÃÅ°°Å³ª ¼û±â´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù.
éÅÍ ¿Ï¼º ¼Ò½º :
10.Realtime Database를 이용한 채팅기능 구현 - 접속 중이
Ãâó: http://cionman.tistory.com/62 [Suwoni-Codelab]