SharedObject:可以从其他客户端接收事件,但在保存数据后永远不会触发事件

SharedObject: can receive event from other clients but never fires event after saving data

我正在使用 SharedObject 创建一个简单的聊天应用程序。 SharedObject 创建良好,当其他客户端更新 SO 上的数据时,我的应用程序可以接收同步事件。但是,当我的应用程序试图将数据保存在 SO 上以向其他客户端发出信号时,问题就来了。我已使用以下代码验证数据已更改:

trace("before:"+so.data.chatMessage);
so.data.chatMessage = msg.text;
trace("after:"+so.data.chatMessage);

它说 "before:abc" 和 "after:def"。不幸的是,在 SO 上的数据发生更改后,没有客户端收到同步事件,包括使数据自行更改的客户端。所以这意味着这个客户端可以接收其他客户端的消息,但它自己的消息永远不会出去。

有人见过这样的问题吗?谢谢, 杰克

你必须打电话给 flush():

If you don't use this method, Flash Player writes the shared object to a file when the shared object session ends — that is, when the SWF file is closed, when the shared object is garbage-collected because it no longer has any references to it, or when you call SharedObject.clear() or SharedObject.close().

使用setProperty()改变属性:

Updates the value of a property in a shared object and indicates to the server that the value of the property has changed.

由于您只更改了 data 对象的 属性,因此不会发出此值已更改的通知。

Calling so.flush() resulted in "Error: Error #2130: Unable to flush SharedObject." It did not print an internal error, though. So it seems the problem was the flush couldn't be successful... Any idea how could happen?

看看另一个问题:

Error #2130 Unable to flush sharedObject