2012-01-14

Jednoduchý HTTP server v DARTu

Nedávno přibyly do projektu Dart dvě příjemné novinky: Kompilace virtual machine pro Windows v rámci průběžného buildu, a možnost spouštět skripty nad virtual machine přímo z vývojovéjo prostředí Dart Editoru. Pojďme tyto novinky vyzkoušet na jednoduchém HTTP serveru.

Nejdřív si nastavíme vývojové prostředí. Budeme potřebovat:

  1. Dart SDK: Obsahuje předkompilovanou virtual machine, neboli runtime pro spouštění programů napsaných v Dartu. Můžeme si ho stáhnout ze stránky průběžných buildů: http://gsdview.appspot.com/dart-editor-archive-continuous/latest/.
  2. Dart Editor: Doporučuju také stáhnout z průběžných buildů (stejná adresa jako u Dart SDK), protože oficiální stabilní verze, dostupná z dartlang.org, ještě nerozlišuje typy projektů. Novější verze se při vytváření projektu zeptají, zda jde o webovou nebo "skriptovou" aplikaci. Pozn: Ke spuštění příkladu v tomto postu Dart Editor nezbytně nepotřebujete, můžete použít libovolný textový editor a aplikaci spustit z příkazové řádky.
  3. Knihovnu http: Najdete ji ve zdrojových kódech Dartu, tvoří ji dva soubory (html.dart a html_impl.dart). Nejlépe je stáhnete pomocí Subversion (svn checkout http://dart.googlecode.com/svn/branches/bleeding_edge/dart/samples/chat), ale protože to jsou jen dva soubory, nedá moc práce je stáhnout ručně z webu.

Stáhněte si a rozbalte obojí někam na disk a spusťte Dart Editor. V menu Tools – Preferences – Launch je potřeba nastavit cestu na "Dart VM executable", který se nachází v Dart SDK ve složce bin.

Nyní vytvořte nový projekt typu "Script" a spusťte jej pomocí ikony na panelu nástrojů:

darteditorscript[2]

Pokud v okně konzole vidíte "Hello World", gratulujeme, postupujete do dalšího kola.

Nyní stačí naimportovat knihovnu http (použijte relativní cestu vzhledem k vašemu kódu) a pár řádků kódu:

#import("lib/http.dart");

void main() {
  var server = new HTTPServer();
  server.listen('127.0.0.1', 8080, processRequest);
  print('Listening...');
}

void processRequest(HTTPRequest request, HTTPResponse response){
  print("Request: ${request.method} ${request.uri}");
  request.dataEnd = (String postData) => respond(postData, response);
}

void respond(String postData, HTTPResponse response) {
  response.setHeader("Content-Type", "text/html; charset=UTF-8");
  response.writeString('<h1>Hello, Dartisans!</h1>', null);
  response.writeDone();
}

Spusťte aplikaci, navigujte váš oblíbený prohlížeč na adresu http://127.0.0.1:8080 a je to!

Žádné komentáře:

Okomentovat