送信データのルール

API にも説明がありますが、任意のクラスインスタンスをクライアントへ送信可能です。ただし、以下のルールがあります。

  1. public なクラスであること。
  2. Serializable を実装したクラスであること。
  3. クライアントへ送信可能なメンバ変数は public なものに限られる(配列も送信可能)。

ただし、以下の制約があります。

  1. インスタンス変数のみ。static 変数は送信されない。
  2. transient 変数は送信されない。

先程の Command クラスの場合、以下の2つが送信条件に合致する変数です。

No 変数宣言 用途
1public boolean finish = false;trueであれば、コマンド実行が終わった事を示す。
2public String echo;コマンドの標準出力内容1行分。

一方、result.html のコールバック関数は、以下のようになっていました。

result.html
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
function command_echo( obj ) {
  if ( obj.echo ) {
    var div = document.createElement( 'div' );
    div.className = 'echo';
    div.innerHTML = obj.echo;
    var result = paraselene_get_id( 'result' );
    result.appendChild( div );
  }
  if ( obj.finish ) {
    document.forms.to_index.ok.disabled = false;
    return false;
  }
  return true;
}

つまり、サーバーから送られたクラスインスタンスの変数名でそのままアクセスする事ができます。
また、サーバーでは応答がキューイングされている、という説明をしました。
例えば、クライアントがアクセスした時に、サーバー側では Command インスタンスが10件キューイングされていたとすると、1回の通信の直後 command_echo が10回連続で呼び出されます。
※10回呼び出す途中で false をリターンすると、コールバック呼び出しもそこで終了します。

JSON

最終更新: 2009/10/17
特に明示されていない限り、本Wikiの内容は次のライセンスに従います:CC Attribution 3.0 Unported
文書の先頭へ
SourceForge.JP
2009 © Akira Terasaki.  
Driven by DokuWiki The Apache Software Foundation