LlOpenRemoteDataChannel/ja - Second Life Wiki

LlOpenRemoteDataChannel/ja

From Second Life Wiki

Second Life Wiki > LlOpenRemoteDataChannel/ja
Jump to: navigation, search

Contents

要約

関数: 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 イベントは発生するかもしれませんし、発生しないかもしれません。 (後者の場合、スクリプトは無反応になります。)
All Issues ~ Search JIRA for related Bugs

サンプル

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) { // チャネルが作成された
        }
    }
}

特記事項

Search JIRA for related Issues

この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。