Как записать простой веб-сервер в Erlang?

Используя установку Erlang по умолчанию, что минимальный код необходим для создания "Привет мирового" создания веб-сервера?

31
задан Zubair 5 February 2010 в 11:48
поделиться

4 ответа

Если понимать буквально "производить", вот довольно маленький пример. Он даже не читает запрос (но выполняет форк при каждом запросе, поэтому это не так минимально).

-module(hello).
-export([start/1]).

start(Port) ->
    spawn(fun () -> {ok, Sock} = gen_tcp:listen(Port, [{active, false}]), 
                    loop(Sock) end).

loop(Sock) ->
    {ok, Conn} = gen_tcp:accept(Sock),
    Handler = spawn(fun () -> handle(Conn) end),
    gen_tcp:controlling_process(Conn, Handler),
    loop(Sock).

handle(Conn) ->
    gen_tcp:send(Conn, response("Hello World")),
    gen_tcp:close(Conn).

response(Str) ->
    B = iolist_to_binary(Str),
    iolist_to_binary(
      io_lib:fwrite(
         "HTTP/1.0 200 OK\nContent-Type: text/html\nContent-Length: ~p\n\n~s",
         [size(B), B])).
52
ответ дан 27 November 2019 в 21:46
поделиться

Для веб-сервера, использующего только встроенные библиотеки, проверьте inets http_server . Если вам нужно немного больше мощности, но все же для простоты, вам следует проверить mochiweb библиотека. Вы можете найти в Google множество примеров кода.

11
ответ дан 27 November 2019 в 21:46
поделиться

Вы действительно хотите написать веб-сервер на Erlang, или вы хотите веб-сервер на Erlang, чтобы вы могли создавать динамическое веб-содержимое с помощью Erlang?

Если последнее, попробуйте YAWS. Если первое, взгляните на исходный код YAWS для вдохновения

.
7
ответ дан 27 November 2019 в 21:46
поделиться

Если вам нужен очень простой в использовании веб-сервер для создания спокойных приложений или чего-то подобного, ознакомьтесь с поведением gen_webserver: http://github.com/martinjlogan/gen_web_server .

4
ответ дан 27 November 2019 в 21:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: