Difference between revisions of "LSL HTTP server/examples/fr"
< LSL HTTP server | examples
Jump to navigation
Jump to search
Line 89: | Line 89: | ||
if (methode == URL_REQUEST_GRANTED) | if (methode == URL_REQUEST_GRANTED) | ||
{ | { | ||
llSay(0,"URL: " + | llSay(0,"URL: " + corps); | ||
} | } | ||
else if (methode == URL_REQUEST_DENIED) | else if (methode == URL_REQUEST_DENIED) | ||
{ | { | ||
llSay(0, "Et flûte. " + | llSay(0, "Et flûte. " + corps); | ||
} | } | ||
else if (method == "GET") | else if (method == "GET") | ||
Line 102: | Line 102: | ||
detection = TRUE; | detection = TRUE; | ||
} | } | ||
requetes += [ id ]; | requetes += [ id ]; | ||
} | } |
Revision as of 03:15, 10 May 2009
LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Categorized Library | Tutorials |
Hello World!
Exemple classique, le plus petit script à base de http_request possible. <lsl> default {
state_entry() { llRequestURL(); }
http_request(key id, string methode, string corps) { if (methode == URL_REQUEST_GRANTED) { llSay(0, "URL : " + corps); } else if (methode == "GET") { llHTTPResponse(id, 200, "Bonjour à tous !"); } }
} </lsl>
Une version légèrement plus robuste : <lsl> default {
state_entry() { llRequestURL(); }
http_request(key id, string methode, string corps) { if (methode == URL_REQUEST_GRANTED) { llSay(0, "URL : " + corps); } else if (methode == URL_REQUEST_DENIED) { llSay(0, "Quelque chose s'est mal passé, pas d'URL. " + corps); } else if (methode == "GET") { llHTTPResponse(id, 200, "Bonjour à tous !"); } else { llHTTPResponse(id, 405, "Méthode pas encore prise en charge."); } }
} </lsl>
Liste de visiteurs
Une liste des visiteurs à portée de détection du serveur.
Notes :
- Comporte une méthode pour gérer des requêtes multiples alors que l'on attend le retour de requêtes asynchrones.
<lsl>integer detection = FALSE;
list requetes;
envoie_reponse(string corps) {
integer l = llGetListLength(requetes); integer j;
for (j = 0; j < l; ++j) { llHTTPResponse(llList2Key(requetes, j), 200, corps); } requetes = [];
}
default {
state_entry() { llRequestURL(); } http_request(key id, string methode, string corps) { if (methode == URL_REQUEST_GRANTED) { llSay(0,"URL: " + corps); } else if (methode == URL_REQUEST_DENIED) { llSay(0, "Et flûte. " + corps); } else if (method == "GET") { if (!detection) { llSensor("", NULL_KEY,AGENT, 96, PI); detection = TRUE; }
requetes += [ id ]; } else { llHTTPResponse(id, 405, "Hein ?"); } } no_sensor() { envoie_reponse("C'est désert ici."); detection = FALSE; } sensor(integer n) { string rapport; integer i;
if (n < 16) rapport = "Il y a " + (string) n + " avatars dans le coin:"; else rapport = "C'est la folie ici, il y a au moins 16 avatars dans le coin.";
for (i = 0; i < n; ++i) { rapport += "\n\t" + llDetectedName(i); } envoie_reponse(rapport); detection = FALSE; }
} </lsl>
Url Persistence / Visitor Counter
A more complete 'hello world', always has an url and keeps a visitor counter. <lsl> string url; integer hits;
setup() {
llSetObjectName("HTTP Server"); url = ""; llRequestURL(); hits = (integer)llGetObjectDesc(); llSetText((string)hits + " visitors.",<1,1,0>,1);
}
default {
state_entry() { setup(); } on_rez(integer n) { setup(); } changed(integer c) { if (c & (CHANGED_REGION | CHANGED_REGION_START | CHANGED_TELEPORT) ) { setup(); } } touch_start(integer n) { llSay(0,"My url is: " + url); } http_request(key id, string method, string body) { if (method == URL_REQUEST_GRANTED) { url = body; } else if (method == URL_REQUEST_DENIED) { llSay(0, "Something went wrong, no url. " + body); } else if (method == "GET") { ++hits; llSetObjectDesc((string)hits); llSetText((string)hits + " visitors.",<1,1,0>,1); llHTTPResponse(id,200,"Hello! You are visitor " + (string)hits + "."); } else { llHTTPResponse(id,405,"Method unsupported"); } }
} </lsl>