red5 общий объект на стороне сервера

Я пытаюсь сохранить всех пользователей внутри общего объекта, созданного на стороне сервера, поэтому все пользователи получают синхронизированный список всех онлайн-пользователей.

Я думаю, что правильно создаю общий объект на стороне сервера, но я не могу «найти» общий объект во флэш-приложении.

Внутри класса приложения 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;
}

Общий объект Flash выглядит следующим образом:

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, похоже, не находит общий объект на сервере.


person Dennis    schedule 21.11.2009    source источник


Ответы (1)


Я обнаружил, что вы можете использовать приведенную ниже строку для выполнения сценария as3 вместо сохранения данных внутри общего объекта:

ServiceUtils.invokeOnAllConnections(room, "my_as3_function", userList);
person Dennis    schedule 23.11.2009
comment
Конечно, это зависит от вашей ситуации, но во многих случаях подход SO более эффективен, чем вызов метода для каждого соединения. - person Paul Gregoire; 01.05.2012