API にも説明がありますが、任意のクラスインスタンスをクライアントへ送信可能です。ただし、以下のルールがあります。
ただし、以下の制約があります。
先程の Command クラスの場合、以下の2つが送信条件に合致する変数です。
| No | 変数宣言 | 用途 |
|---|---|---|
| 1 | public boolean finish = false; | trueであれば、コマンド実行が終わった事を示す。 |
| 2 | public String echo; | コマンドの標準出力内容1行分。 |
一方、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へ