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 服

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章