您的位置:首页 > 编程语言 > Java开发

fms-后台管理用户列表

2013-10-22 20:49 288 查看
先创建一个全局对象用来存储 用户

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 服
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  fms as jsp java 管理