client和server相互调用的方法(call方法调用之前NetConnection必须先成功连接!):
1. 对象定义:
client端:
nc: NetConnection;
ns: NetStream;
so: SharedObject;
server端:
client: Client;
sns: Stream;
sso: Server Side SharedObject;
2. client调用server端:
client调用:
nc.connect;
nc.close;
nc.call(“myMethod”,resultObject, p1…pn ); // 第一个参数方法名,第二个返回对象,后面是函数的参数;
ns.send(“myMethod”, p1…pn); // 第一个是函数名,后面的传递给函数的参数;
server回应:
application.onConnect;
application.onDisconnect;
client.myMethod(p1…pn); // 这个client其实就是和客户端类同名的一个服
务器端的类,方法直接作为类的方法写入。写法:className.prototype.myMethod;或者是一个Client对象;
sso.myMethod(p1…pn);
结果处理:
方法1:方法2:
resultObject = function() {
this.onResult = function(res) {
// res是返回的结果
}
this.onStatus = function(info) {
// info是错误对象,info.code是错误信息;
}
}
ncObj.call(“fun”, new resultObject(), p1,p2…);
方法2:
var resultObject= new Object();
resultObject.onResult = function(res) { }
resultObject.onStatus = function(res) { }
ncObj.call(“fun”, resultObject, p1, p2…);
注意:这里的resultObject的定义一定要和call方法在同一级别,要不无法处理返回结果!
3. server调用client端:
client回应:
nc.myMethod(p1…pn);
ns.myMethod(p1…pn);
so. myMethod(p1…pn);
server调用:
client.call(“myMethod”, resultObject, p1…pn); // client是客户端Client对象,
这个参数可以在Application.onConnect等函数里面获取;
sns.send(“myMethod”,p1…pn);
sso.send(“myMethod”,p1…pn);