如何使用远程共享对象

问题描述 投票:1回答: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");
}
actionscript-3 client-side server-side shared-objects
1个回答
2
投票

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

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

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

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

my_so.setProperty("users");

实际上正在删除键users,因为它与此相同:

my_so.setProperty("users", null);

最后,在非常特殊的情况下,您需要调用setDirty(),但在这种情况下则不需要。请参阅this answer,以获取有关如何与SharedObjects共享数据的更详细的示例

© www.soinside.com 2019 - 2024. All rights reserved.