Erlang și server http

Recent, am devenit implicat în mod activ în procesul de învățare Erlang și, pe cât posibil, vor împărtăși descoperirile lor în acest domeniu. De obicei, atunci când vine vorba de serverul HTTP scris în Erlang, amintiți-vă MochiWeb. sau yaws. Dar, în modulele standard de Erlang au deja un server HTTP ca unul dintre serviciile Inets de aplicare. Să luăm în considerare modul în care să-l folosească.

server HTTP poate rula o varietate de moduri, dar aici voi discuta în opinia mea, cel mai flexibil. Avem nevoie de următoarea structură:

Jurnalul de director / va fi scris pentru fișierele jurnal. În fișierele statice www / magazine de director, în acest caz index.html:

test.config - acesta este fișierul de configurare principal pentru aplicarea Inets, prin care vom rula un server HTTP:

Aici httpd adăugat ca o configurație inets serviciu în httpd.conf:

Să luăm în considerare pe scurt opțiunile:

Fișierul de configurare poate fi, de asemenea, într-un format similar cu configurația Apache. dar îmi place formatul Erlang. opțiuni de configurare suplimentare sunt disponibile în documentația httpd.

Singura opțiune în script-uri de module erl_script_alias a fost listat ca module disponibile. Originalul scripts.erl fișier:

Test de funcționare / 3 descrie punctul nostru de acces pentru testare:

  • SessionId - acest ID de interogare care este utilizat în apelurile ulterioare mod_esi: livreze / 2. Este recomandat sa nu faca orice presupuneri cu privire la tipul de identitate, dar în secret, în implementarea curentă - acesta este procesul BIP.
  • Env - o listă de variabile de mediu în forma [].
  • Intrare - Cereri de date. În acest caz, noi nu le folosim.

Funcția mod_esi: livra / 2 este utilizat pentru a trimite date la client. Primul parametru care urmează să fie transmis pe un identificator de cerere de intrare a primit, și apoi o listă de șiruri de transmitere. Funcția poate fi apelat de mai multe ori, dar dacă doriți să transferați titluri, acestea ar trebui să fie returnate la primul apel la o livra, la fel ca în exemplul nostru.

Exemplul folosește, de asemenea, un format auxiliar funcția / 1 pentru formatarea variabilelor de mediu.

Înainte de a începe, avem nevoie pentru a compila modulul nostru:

Și apoi putem începe să rulați fișierul cu următorul conținut:

server de test Stop poate fi un standard Ctrl + C și.

articole similare