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 服