2013-02-15 106 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