Difference between revisions of "LlOpenRemoteDataChannel"

From Second Life Wiki
Jump to navigation Jump to search
(Added wiki 'deprecated' tag, asl XML-RPC is to be removed "at some point". Updated formatting.)
 
(9 intermediate revisions by 8 users not shown)
Line 6: Line 6:
|return_text
|return_text
|spec
|spec
|caveats=* If an object moves from one region to another it must re-open the channel
|deprecated=LSL_http_server
** The object will get the *same* channel as before, but without re-opnening no requests will get through
|caveats=* '''XML-RPC should not be used anymore.  Use http-in instead, see [[LSL_http_server]].'''
* If an object moves from one region to another it must re-open the channel
** The object will get the *same* channel as before, but without re-opening no requests will get through
* Any channel that is not used for 14 days will be cleaned up.
* Any channel that is not used for 14 days will be cleaned up.
** May be advisable to somewhat regularly (before expected use or on a regular shedule) check that the channel is good and hasn't changed by calling llOpenRemoteDataChannel and comparing to the previous channel.
** May be advisable to somewhat regularly (before expected use or on a regular schedule) check that the channel is good and hasn't changed by calling llOpenRemoteDataChannel and comparing to the previous channel.
* Note: XML-RPC requests often time-out due to the front-end server being overloaded.  LL has continued to upgrade the server hardware periodically, but it has remained unreliable.  LL developers have advised that the XML-RPC design isn't scalable (due to the single server bottle-neck) and that the service is "deprecated".  They suggest using [[HTTP Polling]] as an alternative.  If an XML-RPC request does time-out the script's remote_data event may or may not be triggered (and any script response is lost).
|constants
|constants
|examples=<pre>
|examples=<syntaxhighlight lang="lsl2">
default
default
{
{
Line 22: Line 25:
         if(c & (CHANGED_REGION | CHANGED_TELEPORT))
         if(c & (CHANGED_REGION | CHANGED_TELEPORT))
             llOpenRemoteDataChannel();
             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
        }
     }
     }
}
}
</pre>
</syntaxhighlight>
|helpers
|helpers
|also_functions
|also_functions

Latest revision as of 05:11, 24 August 2022

Emblem-important.png Deprecated
(This function has been deprecated, please use LSL_http_server instead.)

Summary

Function: llOpenRemoteDataChannel( );
1.0 Forced Delay
10.0 Energy

Creates a channel to listen for XML-RPC calls. Will trigger a remote_data event with channel id once it is available.

Caveats

  • This function causes the script to sleep for 1.0 seconds.
  • This function has been deprecated, please use LSL_http_server instead.
  • XML-RPC should not be used anymore. Use http-in instead, see LSL_http_server.
  • If an object moves from one region to another it must re-open the channel
    • The object will get the *same* channel as before, but without re-opening no requests will get through
  • Any channel that is not used for 14 days will be cleaned up.
    • May be advisable to somewhat regularly (before expected use or on a regular schedule) check that the channel is good and hasn't changed by calling llOpenRemoteDataChannel and comparing to the previous channel.
  • Note: XML-RPC requests often time-out due to the front-end server being overloaded. LL has continued to upgrade the server hardware periodically, but it has remained unreliable. LL developers have advised that the XML-RPC design isn't scalable (due to the single server bottle-neck) and that the service is "deprecated". They suggest using HTTP Polling as an alternative. If an XML-RPC request does time-out the script's remote_data event may or may not be triggered (and any script response is lost).

Examples

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
        }
    }
}

Deep Notes

Signature

function void llOpenRemoteDataChannel();