DOWNTIME ANNOUNCEMENT - Maintenance will be performed from 1AM-3AM Pacific Time on 2010-03-20 (tonight). Please do not edit any pages during this time.
LSL HTTP server/examples/fr
From Second Life Wiki
Page Principale > LSL HTTP server > examples > LSL HTTP server/examples/fr (Redirected from LSL http server/examples/fr)
| LSL Portal | Functions | Events | Types | Operators | Constants | Flow Control | Script Library | Tutorials |
Hello World!
Exemple classique, le plus petit script à base de http_request possible.
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 !"); } }
Une version légèrement plus robuste :
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."); } }
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.
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 (methode == "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; } }
Presistance de l'URL - compteur de visiteurs
Un "hello world" plus complet, a une URL en permanence et tient à jour un compteur de visiteurs.
string url; integer visites; initialisation() { llSetObjectName("Serveur HTTP"); url = ""; llRequestURL(); visites = (integer)llGetObjectDesc(); llSetText((string) visites + " visiteurs.", <1,1,0>, 1); } default { state_entry() { initialisation(); } on_rez(integer n) { initialisation(); } changed(integer c) { if (c & (CHANGED_REGION | CHANGED_REGION_START | CHANGED_TELEPORT) ) initialisation(); } touch_start(integer n) { llSay(0, "Mon URL est : " + url); } http_request(key id, string methode, string corps) { if (methode == URL_REQUEST_GRANTED) url = corps; else if (methode == URL_REQUEST_DENIED) llSay(0, "Souci, pas d'URL. " + corps); else if (methode == "GET") { ++visites; llSetObjectDesc((string) visites); llSetText((string) visites + " visiteurs.", <1,1,0>, 1); llHTTPResponse(id, 200, "Bonjour ! Vous êtes le visiteur numéro " + (string) visites + "."); } else llHTTPResponse(id, 405, "Méthode inconnue."); } }

