客户端如何与服务端之间建立连接上次已经说了。今天主要说说客户端如何与服务端通信的。简单的说就是用使用什么方法,怎么处理。
先说客户端呼叫服务端。如果不使用共享对象,客户端呼叫服务端,就一个方法:call。call方法里边,第一个参数是服务端的方法名字,第二个参数是Responder对象(可以为空,就不需要返回了),后边的参数是任意的。可以带数值类型,object,array都可以。如:

            var songName:String = "痛彻心扉";
            var obj:Object = {nickName:"vini",age:28};
            var arr:Array = [1985,10,24];
            nc.call("iWantSing",null,songName,obj,arr);


服务端的方法:

Client.prototype.iWantSing = function (songName,obj,arr)
{
    application.broadcastMsg("heWantSing",songName,obj.nickName);
    this.call("youHasTell",null);
}

服务端的被呼叫端方法这样定义:Client.prototype.functionName = function (){}. 在该方法内定义的this,指的就是Client,这个是as2的写法。

再说服务端呼叫客户端。服务器呼叫客户端比客户端呼叫服务端多一个方法,就是广播:broadcastMsg.广播,是可以将消息发给同一个连接的所有的客户端。服务端,还可以通过call来呼叫客户端。使用方法和客户端呼叫服务端的方法一样。上边都已经写到了。这里再明确一点。服务端呼叫客户端是Client来call。这个Client怎么来。一个是客户端呼叫的方法中,this指向的就是Client。Client还有一个来源,就是服务端参数自己带的。如:

application.onDisconnect = function(client) 
{
    
}

Client还有一个来源,那就是application的一个属性clients,它包裹链接服务器的所有Client。如何明确哪一个呢,在建立链接的时候,你可以去给Client定义属性。如name属性。

application.onConnect = function(client,userName)
{
    var len = application.clients.length;
    var time = application.getNowTime();
    var i = 0;
    for( i = 0 ; i< len ; i++)
    {
        if(application.clients[i].name == userName)
        {
            application.broadcastMsg("sameLogin",userName,time);
            application.disconnect(clients[i]);
            return;
        }
    }
    
    client.name = userName;   //这里很重要,将用户名赋值给client对象。
    userList.push(userName);
    application.acceptConnection(client);  //接受客户端的连接。
    application.broadcastMsg("successLogin",userName,time);  //广播一条消息出去。所有的客户端都会收到这个信息。这里带了一个参数,登陆客户的用户名
}

最后说说服务端调用服务端的方法:服务端调用服务端,用application关键字定义吧。如:

 

//获取服务器的时间
application.getNowTime = function ()
{
    var timedate = new Date();
    var hours = timedate.getHours();
    var minutes = timedate.getMinutes();
    var seconds = timedate.getSeconds();
    
    if(hours < 10) {
        hours = "0" + hours;
    }
    
    if(minutes < 10) {
        minutes = "0" + minutes;
    }
    
    if(seconds < 10) {
        seconds = "0" + seconds;
    }
    return hours+":"+minutes+":"+seconds;  
}

还有就是用prototype去创造。至于说用共享对象的通信,下次再做笔记吧。域名备案号,被注销了,弄一个多星期都访问不了域名。

P2P http://labs.adobe.com/technologies/cirrus/