1

これが私の問題です。サーバーに接続された NetConnection オブジェクトがあります。上に NetStream オブジェクトを作成すると、サーバーからファイルの再生が開始されました。ここまでクラシック。

私が今必要としているのは、プレイタイム中のさまざまな瞬間に、明らかに既存の TCP 接続を使用して、いくつかの (短い) メッセージをサーバーに送信できることです。

docsで読むことができるものから、基礎となる NetConnection オブジェクトは「クライアントとサーバー間の双方向接続」をサポートしており、明らかにTCPレイヤーがそれをサポートしています。私は TCP ネットワークの概念についてはかなりよく知っていますが、Flash がそれらをどのように実装するかについてはまったく知りません。

  1. これは正しいです?NetConnection (またはその他のメカニズム) を使用して実行できますか?

  2. これを行うにはどうすればよいでしょうか (例は素晴らしいですが、プロセスの概念的な説明でも同様に機能します)。NetConnection 経由でクライアントからサーバーにメッセージを送信するにはどうすればよいですか?

  3. アクティブな NetStream オブジェクトは、そのような操作を妨害しますか?

ありがとう。

4

1 に答える 1

2

はい、できます。

私は、Flash Media Server への接続について話していると思います。

サーバー側のスクリプトメソッドをリモートで実行する NetConnection.call() メソッドを使用します。

public function call(command:String, responder:Responder, ... arguments):void

このサーバー側メソッドを接続クライアント クラスのプロトタイプとして定義する必要があります。

例えば

Client.prototype.MyMethod = function(arg)
{
trace("Server received " + arg + "\n");
}

次に、このメソッドを呼び出すと、次のようになります。

var nc:NetConnection;

//initialize net connection and connect

nc.call("MyMethod", null, "Hello, server");

結果を取得する必要がある場合は、null の代わりに Responder クラス インスタンスを使用します。

サーバーがクライアントのメソッドを呼び出す必要がある場合は、クライアント オブジェクトでサーバー側の "call" 関数を使用します。この場合、コールバック メソッドを持つクライアント側でいくつかのオブジェクトを定義する必要があります。

クライアント側:

var obj = new Object();
obj.MyCallback = function(arg:Object)
{
trace ("Received message from server: " + arg as String);
}
nc.client = obj;

サーバ側:

clientObject.call("MyCallback", null, "Hello, client");

よろしく、デビッド。

于 2010-08-24T20:39:40.203 に答える