LlOpenRemoteDataChannel/ja

From Second Life Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

要約

関数: 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

Signature

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