так что я все еще застрял на этом, что я могу создать удаленный общий объект, но не могу читать, пока я уведомлен об изменениях.Я использую транковую версию Red5 и Flex 4.0 с Flash Builder.В отладке я вижу, что changeLog имеет имя измененного значения rso, но сам объект имеет неопределенное значение.
В настоящее время я работаю на локальной машине Windows, но попробовал все на сервере 10.04 Ubuntu и получил те же результаты.я могу подключиться к комнате, создать общий объект, и все клиенты будут уведомлены об этом, но только пользователь, который изменил значение rso, может прочитать значение, которое один раз, а другие просто получают неопределенное значение.У кого-нибудь есть опыт решения этой проблемы?Я был бы очень признателен за любую помощь, потому что это сводит меня с ума, я нахожусь в течение примерно трех недель, прочитал все учебные пособия по RSO и не могу найти какое-либо решение.Я пробовал с постоянными и непостоянными, инициированными сервером и клиентом, но все время получаю одинаковые результаты.
есть мой код на стороне клиента:
protected function application1_creationCompleteHandler(event:FlexEvent):void {
var room_id:Number = vars("room");
connection = new NetConnection();
connection.connect("rtmp://127.0.0.1/video/" + room_id);
connection.addEventListener(NetStatusEvent.NET_STATUS, onConnected);
connection.client = this;
}
private function onConnected(event:NetStatusEvent) : void {
if(event.info.code == "NetConnection.Connect.Success") {
so = SharedObject.getRemote("video", connection.uri, true);
so.addEventListener(SyncEvent.SYNC, onSync);
so.connect(connection);
} else {
Alert.show("Unsuccessful Connection", "Information");
}
private function onSync(event:SyncEvent):void {
if(so.data["video"] != undefined)
Alert.show(so.data["video"].toString(), "Information");
}
onна стороне сервера у меня есть:
ISharedObject so;
IServiceCapableConnection iconn;
public static IScope iroom;
/** {@inheritDoc} */
@Override
public boolean connect(IConnection conn, IScope scope, Object[] params) {
iconn = (IServiceCapableConnection)conn;
if (!super.connect(conn, scope, params)) {
return false;
}
System.out.println("Connected True");
return true;
}
/** {@inheritDoc} */
@Override
public void disconnect(IConnection conn, IScope scope) {
super.disconnect(conn, scope);
}
@Override
public boolean roomStart(IScope room) {
if (!super.roomStart(room))
return false;
createSharedObject(room, "video", true);
so = getSharedObject(room, "video");
System.out.println("Room created succesfully");
ISharedObjectListener listener = new SOEventListener();
so.addSharedObjectListener(listener);
return true;
}
со слушателем на стороне клиента, я не могу сделать вывод в консоли и увидеть, что rso изменилось и каково текущее значение, хотя я проверяю файл rso постоянства на сервере red5 ипохоже, что все работает, и единственное, чего не хватает, так это возможности прочитать ценность для всех клиентов.Я буду признателен за любую помощь.Спасибо