LlOpenRemoteDataChannel/ja
Jump to navigation
Jump to search
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
要約
関数: llOpenRemoteDataChannel( );XML-RPC 要求を listen するチャネルを作成します。チャネルが利用可能になったならば remote_data イベントが発生し、その引数にチャネル ID が渡されます。
警告
- この関数は 1.0 秒間、スクリプトを停止します。
- XML-RPC は今後使用すべきではありません。代わりに http-in を使いましょう。 LSL_http_server を参照のこと。
- オブジェクトが別リージョンへ移動した場合は、チャネルを開き直さなければいけません。
- そのオブジェクトには以前と同じチャネルが割り当てられますが、開き直さない限り、リクエストを受け取れません。
- 14 日間にわたり使われなかったチャネルは削除されます。
- チャネルが動作しており変更されていない事を、(例えば通常の通信の前、あるいは定期的なスケジュールとして) いつもチェックするというのは良い考えです。これは llOpenRemoteDataChannel 関数を実行し、以前のチャネル ID と比較することで行なえます。
- 注意: XML-RPC 要求は、フロントエンド サーバが過負荷となるため、しばしばタイムアウトします。LL (Linden Lab) は定期的にサーバのハードウェアを更新し続けていますが、未だに信頼性には欠けます。 (サーバが 1 つだけというボトルネックゆえに) XML-RPC の設計に拡張性が無く、そのサービスは "推奨されない" と LL の開発者は勧告してきました。彼らは HTTP Polling を代替とするよう提案しています。XML-RPC 要求がタイムアウトした場合、そのスクリプトの remote_data イベントは発生するかもしれませんし、発生しないかもしれません。 (後者の場合、スクリプトは無反応になります。)
サンプル
default
{
state_entry()
{
llOpenRemoteDataChannel();
}
changed(integer c)
{
if(c & (CHANGED_REGION | CHANGED_TELEPORT))
llOpenRemoteDataChannel();
}
remote_data( integer event_type, key channel, key message_id, string sender, integer idata, string sdata )
{
if (event_type == REMOTE_DATA_CHANNEL) { // チャネルが作成された
}
}
}
特記事項
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。