2013-02-15 57 views
0

我想使用远程共享对象在客户端和服务器之间使用sharedobject.send方法为聊天应用程序发送数据消息。 我真的很难理解文档。我试图使用的代码根本无法使用。如何使用远程共享对象

有人可以友好地向我展示相关的API调用吗?并且,仔细检查我的代码,并告诉我确切我错了?

谢谢。

客户端

import flash.net.NetConnection; 
import flash.events.NetStatusEvent; 
import flash.events.SyncEvent; 

var nc:NetConnection = new NetConnection(); 

nc.connect("rtmfp://fms/exampledomain"); 

nc.addEventListener(NetStatusEvent.NET_STATUS, netHandler); 

function netHandler(event:NetStatusEvent):void { 
    if (event.info.code == "NetConnection.Connect.Success") { 
     trace("Your Connected"); 

     //Creating the sharedobject 
     var my_so:SharedObject = SharedObject.getRemote("users", nc.uri, false); 

     my_so.connect(nc); 

     my_so.addEventListener(SyncEvent.SYNC, syncHandler); 

     my_so.setProperty("users"); 

     my_so.setDirty("users"); 

     function syncHandler(event:SyncEvent):void { 
      var changelist:Array = event.changeList; 
     } 

     my_so.send function sendMessage(str){ 

服务器端

application.onConnect(clientObj)() { 
    application.acceptConnection(clientObj) { 
     trace("connected up"); 
    } 

    var my_so = SharedObject.getRemote("users", false); 
    my_so.send("Hello user", "Its only a test"); 
} 

回答

1

编辑你的问题后,它看起来像一些代码是您的客户端样品中失踪。

从我看到的,你不需要客户端代码为您的示例工作。您可以直接从客户端调用send()方法。但要测试它的工作原理,您需要连接两个客户端。

对于您的NetConnectionSharedObject,请确保在调用connect()方法之前添加事件侦听器。

如果您想实现的只是在客户端之间共享数据,那么您甚至不需要使用send()方法,只需在共享对象上设置简单的属性即可。但要注意以下几点:

my_so.setProperty("users"); 

实际上是删除键users,因为它是与此相同:

my_so.setProperty("users", null); 

最后,你需要调用setDirty()在非常特殊的情况,但不在这一个。有关如何与SharedObjects共享数据的更详细示例,请参见this answer