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()クライアントからメソッドを直接呼び出すことができます。ただし、動作するかどうかをテストするには、2 つのクライアントを接続する必要があります。

yourNetConnectionまたは yourについては、メソッドSharedObjectを呼び出す前に必ずイベント リスナーを追加してください。connect()

クライアント間でデータを共有するだけの場合は、メソッドを使用する必要はなくsend()、共有オブジェクトにプロパティを設定するだけです。ただし、次の点に注意してください。

my_so.setProperty("users");

usersこれと同じであるため、実際にキーを削除しています:

my_so.setProperty("users", null);

setDirty()最後に、非常に特殊なケースでは呼び出す必要がありますが、このケースでは必要ありません。SharedObjects とデータを共有する方法の詳細な例については、この回答をご覧ください。

于 2013-04-22T03:37:48.597 に答える