這是第一次使用firebase實作所以就順便記錄一下
有興趣可以參考看看!
首先先做client端
先建立一個client端的firebase物件
var clientRef = new Firebase('https://test.firebaseio.com/client/'+chat_unique);
這裡的chat_unique是一個維一值用來記錄儲存客戶端資料
接著只要監聽在輸入欄位所送出的資料
clientRef.push({id: id, text: text, server: false});
這邊說明一下我所存的欄位有那些
id用來記錄用戶端id
text用來記錄用戶端輸入字串
server用來記錄是否為客服
在來就是監聽clientRef的變化所需要做的處理
clientRef.on('child_added', function(snapshot) { var message = snapshot.val(); if(message.server){ $('.server_msg').append(message.text); }else{ $('.client_msg').append(message.text); } });
這樣客戶端基本上就算完成了
在來就是一對多的server端了
先建立一個server端的firebase物件
serverRef = new Firebase('https://test.firebaseio.com/client');
然後監聽serverRef的變化做處理
serverRef.on('child_added', function(childSnapshot, prevChildName) { var childname = childSnapshot.name();//取得節點名稱 var clientRef = new Firebase('https://test.firebaseio.com/client/'+childname);//建立新的clinet物件 //接著跟client端一樣只要監聽在輸入欄位所送出的資料 clientRef.push({id: id, text: text, server: true}); //監聽clientRef的變化做處理 clientRef.on('child_added', function(snapshot) { var message = snapshot.val(); if(message.server){ $('.server_msg').append(message.text); }else{ $('.client_msg').append(message.text); } }); });
這樣就差不多了
這邊可能會有的問題是在server欄位需要做權限的設定
只能讓server端寫入true
所以在firebase的資料庫規則裡寫下
{ "rules": { ".read": "auth.username == 'admin'", ".write": "auth.username == 'admin'", "login":{ ".read": true, ".write": "auth.username == 'admin'" }, "service":{ "$user": { ".read": true, "$other":{ ".read": true, ".write": "newData.child('admin').val() == false" } } } } }
這樣基本上就差不多了在來就只剩美化和一些細節處理