{tcp_closed, Socket} ->
Player = Client#client.player,
case Player#player.server_pid of
none ->
ok;
Pid ->
serverstate:call({player_out, Pid})
end,
ok;
关于服务器端的网页监控,主要的事件处理是用下面的方法进行的:
function add_tolist(Var)
{
// debug(Ext.get('state'));
//debug("length=" + Var.root.length);
for (var num = 0; num < Var.root.length; num++) {
switch(Var.root[num].cmd) {
case "stop": {
var childroot = Ext.getCmp('server_state').getRootNode();
for (var k = 0; k < Var.root[num].value.length; k++) {
childroot.eachChild(function(v) {
v.findChildBy(function(v1){
if (v1 == undefined)
return;
if (v1.attributes.servername==Var.root[num].value[k].servername
&& v1.attributes.ip==Var.root[num].value[k].ip
&& v1.attributes.port==Var.root[num].value[k].port)
v1.remove();
});
});
}
}
break;
case "list":
server_list.root.appendChild(new Ext.tree.TreeNode(Var.root[num].value));
break;
case "state": {
var state = Ext.getCmp('state');
if (state != undefined) {
var tree = Ext.getCmp('server_state');
if (tree == undefined) {
tree = set_server_state();
var rootnode = new Ext.tree.AsyncTreeNode(
{text: 'server state',
draggable:false,
// iconCls: 'file',
children: Var.root[num].value,
id:'servers'
});
tree.setRootNode(rootnode);
state.add(tree);
state.doLayout();
}
}
var grid = Ext.getCmp('server_state');
debug(grid);
var childroot = grid.getRootNode();
childroot.eachChild(
function(v) {
debug(v);
v.attributes.users = 100;
var box = new Ext.ProgressBar({
renderTo:v.attributes.servername,
id: v.attributes.servername,
value: v.attributes.curuser/v.attributes.maxuser});
box.render();
if (v.childNodes.length> 0) {
v.eachChild(
function(v1) {
var box = new Ext.ProgressBar({
renderTo:v1.attributes.ip+"_"+v1.attributes.port,
value: v1.attributes.curuser/v1.attributes.maxuser
});
box.render();
});
}
}
);
}
break;
}
}
SendMessage("server", "cmd=wait", null, add_tolist);
}
SendMessage("server", "cmd=function", null, add_tolist);
在state命令的情况下,可以看出我使用了笨方法,原因在上一篇已经提到了,这里不多做解释,如果有哪位感兴趣修改,并乐意告诉我修改后的结果的话,本人是非常的欢迎。