LlOpenRemoteDataChannel/ja

From Second Life Wiki

メインページ > LlOpenRemoteDataChannel > LlOpenRemoteDataChannel/ja
Jump to: navigation, search

関数: llOpenRemoteDataChannel( );

XML-RPC 要求を listen するチャネルを作成します。チャネルが利用可能になったならば remote_data イベントが発生し、その引数にチャネル ID が渡されます。


警告

  • この関数は1.0秒間、スクリプトを停止します。
  • オブジェクトが別リージョンへ移動した場合は、チャネルを開き直さなければいけません。
    • そのオブジェクトには以前と同じチャネルが割り当てられますが、開き直さない限り、(外部からの) 要求を受け取れません。
  • 14 日間にわたり使われなかったチャネルは削除されます。
    • チャネルが動作しており変更されていない事を、(例えば通常の通信の前、あるいは定期的なスケジュールとして) いつもチェックするというのは良い考えです。これは llOpenRemoteDataChannel 関数を実行し、以前のチャネル ID と比較することで行なえます。
  • 注意: XML-RPC 要求は、フロントエンド サーバが過負荷となるため、しばしばタイムアウトします。LL (Linden Lab) は定期的にサーバのハードウェアを更新し続けていますが、未だに信頼性には欠けます。(サーバが 1 つだけというボトルネックゆえに) XML-RPC の設計に拡張性が無く、そのサービスは "推奨されない" と LL の開発者は勧告してきました。彼らは HTTP polling (訳注: 外部からの要求を待つのでなく、一定時間おきに外部の HTTP サーバへ要求の有無を確認しに行く) を代替とするよう提案しています。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) { // channel created
        }
    }
}
 
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。
In other languages