asc文件中有2个重要的类



Application类:Application类包含有关一个Flash Media Server应用程序实例的信息,它会一直维持这些信息直到这个应用程序实例被卸载。
Client类:Client类让你处理连接到一个Flash Media Server应用程序实例的每一个用户或说client。

Application类有几个重要事件如下:
Application.onAppStart 当这个应用程序被服务器装载时调用。
Application.onAppStop 当这个应用程序被服务器卸载时调用。
Application.onConnect 当一个客户机连接到这个应用程序时调用。
Application.onDisconnect 当一个客户机从这个应用程序断开连接时调用。

Application类有几个重要方法如下:
Application.acceptConnection() 接受一个来自客户机的至一个应用程序的连接。
Application.broadcastMsg() 向所有连接的客户机广播一条消息。
Application.disconnect() 从服务器断开一个客户机的连接。
Application.rejectConnection() 拒绝至一个应用程序的连接。

Client类有1重要方法如下:
Client.call() 在Flash客户机上异步的执行一个方法,并把值从Flash客户机返回到服务器。

对方法的具体使用:

userList = [];

application.onAppStart = function() {
trace("fms服务器启动......");
};

application.onConnect = function(currentClient) {
application.acceptConnection(currentClient);
if (userList.length>=3) {
   currentClient.call("showServerMsg",null,"已经达到最大用户数");
   application.rejectConnection(currentClient);
} else {
   currentClient.communicateServer = function(value) {
    currentClient.username = value;
    trace(currentClient.username+"加入聊天室");
    userList.push(value);
    trace("当前用户列表"+userList);
    application.broadcastMsg("playOtherVideo",userList);
   };
}
};

application.onDisconnect = function(currentClient) {
trace("用户"+currentClient.username+"离开聊天室");

for (j=0; j<userList.length; j++) {
   if (userList[j] == currentClient.username) {
    userList.splice(j,1);
   }
}
trace("当前用户列表"+userList);
application.broadcastMsg("playOtherVideo",userList);
};

代码说明:
(1)application.broadcastMsg ("客户端方法名",参数..);是asc中一个比较重要的方法,他的作用是向所有连接着的客户端进行广播,调用客户端的函数。这个方法相当于循环遍历Application.clients数组并在每一个独立的客户机上调用Client.call(),但这个方法的效率更高(尤其是当连接的客户机数量很大时)。唯一的不同是当你调用broadcastMsg()时你不能指定一个响应对象,除此以外,两种语法是一样的。
(2)userList.splice(a,b)这个函数,它的作用是从a位置开始移除数组中的b个元素(asc用的是as1语法)
(3)代码中做了限制,只允许最多3人连接fms

原文地址:https://www.cnblogs.com/akweb/p/13331937.html