天天看點

fms-背景管理使用者清單

先建立一個全局對象用來存儲 使用者      
var userList = new Object();
           

然後檢測背景的啟動

application.onAppStart = function()
{
	trace("fms onAppStart...");
};
           

接着檢測來自用戶端的連接配接申請

application.onConnect = function(client, detail)
{
	trace("server begin");
code...
           

在接受申請時先判斷下最大連接配接數

if(application.clients.length>=6000)
{
	trace("fms users num > 6000, refuse connect");
	application.rejectConnection(client);
}
           

通過後再檢測是否有這使用者,這裡用我的需要是一個二級存儲,如果某房間已經有該使用者,則拒絕連接配接,

否則繼續 http檢測      
roomId = detail.split(",")[0];
keys = detail.split(",")[1];
trace("roomId:" + roomId + " keys:" + keys);
client.roomId = roomId;
client.keys = keys;
if(!userList[roomId]) 
{
   userList[roomId] = new Object();
}
if(!userList[roomId][keys])
{
   httpConfirm(client, detail);
}
else 
{
   trace("repeat connect!");
}
           
http檢測是跟jsp通訊确定該使用者是否能連,收到能連接配接資訊時push進userlist裡      
if(myVer.result == "success")
{
   trace("--acceptConnection--");
   userList[roomId][keys] = true;
   application.acceptConnection(client);
}
           
連接配接中斷時接受 onDisConnect時間,去除userlist裡相應使用者:      
application.disconnect(client);
if(userList[client.roomId] && userList[client.roomId][client.keys]) 
{
   userList[client.roomId][client.keys] = null;
}
           

這樣就能實時獲得線上使用者,當給jsp或其他服驗證時,如果被要求需要其他資料驗證,則userlist的value 可以直接存儲client對象

當然最後如果要嚴格一些的話 需要每隔一段時間ping 下所有使用者,如果斷開,則清除掉相應資訊

           

ps.一般發現服務台列印不了或者加載不了application裡的工程,則大多是main.asc寫錯了,有時錯誤Log不會直接列印在 管理工具上,

這是可以去logs檔案夾裡查對應工程的log,或者 伺服器全部重新開機,一般我隻重新開機server 服