2009-11-21 93 views
0

我試圖將所有用戶存儲在服務器端創建的sharedObject中,因此所有用戶都獲得了所有在線用戶的同步列表。red5服務器端共享對象

我認爲我創建了共享對象的服務器端正確的,但我不能「找到」的共享對象的Flash應用程序。

在Java應用程序Red5的類中:

ISharedObject userList; 

public boolean connect(IConnection conn, IScope scope, Object[] params) 
{  
    if(userList == null) 
    { 
     createSharedObject(scope, "userList", false); 
     userList = getSharedObject(scope, "userList"); 
    } 

    userList.setAttribute("user", "some name"); 

    return true; 
} 

閃存共享對象看起來是這樣的:

private var _userSO:SharedObject; 

private function initUserSO() // I call this function when I get a netConnection 
{ 
    _userSO = SharedObject.getRemote("userList", this.uri, false); 
    _userSO.addEventListener(SyncEvent.SYNC,syncUsers); 
    _userSO.connect(this); // this = netconnection 
} 

private function syncUsers(e:SyncEvent):void 
{ 
    MonsterDebugger.trace('userManager',_userSO.data); 
} 

但_userSO似乎並沒有找到共享對象的服務器上。

回答

0

我發現,你可以使用下面一行的執行AS3腳本,而不是存儲共享對象中的數據:

ServiceUtils.invokeOnAllConnections(room, "my_as3_function", userList); 
+0

這當然取決於你的情況,但在很多情況下的SO方法是比在每個連接上調用方法更高效。 – 2012-05-01 17:10:51