1

我正在尝试使用远程共享对象通过聊天应用程序的 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");
}
4

1 回答 1

2

编辑您的问题后,您的客户端示例中似乎缺少一些代码。

据我所知,您的示例不需要客户端代码即可工作。send()您可以直接从客户端调用该方法。但是要测试它是否有效,您需要连接两个客户端。

关于 yourNetConnection或 your ,请确保在调用方法SharedObject之前添加事件侦听器。connect()

如果您想要实现的只是在客户端之间共享数据,那么您甚至不需要使用该send()方法,只需在共享对象上设置属性即可。但请注意以下事项:

my_so.setProperty("users");

实际上是删除密钥users,因为它与此相同:

my_so.setProperty("users", null);

最后,您需要setDirty()在非常具体的情况下打电话,但不是在这种情况下。查看此答案以获取有关如何与 SharedObjects 共享数据的更详细示例

于 2013-04-22T03:37:48.597 回答