httpserver - HTTP-сервер
Функції для запуску вбудованого HTTP-сервера на Лілці.
Модуль httpserver дозволяє приймати HTTP-запити від інших пристроїв у мережі, обробляти їх та надсилати відповіді.
Для роботи сервера Лілка повинна бути підключена до WiFi (див. wifi - Робота з WiFi-мережами).
Приклад простого HTTP-сервера, який відповідає на запити:
1wifi.connect("MyWifi", "password")
2
3local server_fd = httpserver.listen(80)
4
5function lilka.update(delta)
6 local req, err = httpserver.accept(server_fd, 0)
7 if req == nil then
8 return
9 end
10
11 if req.path == "/" then
12 httpserver.respond(req.fd, 200, {["Content-Type"] = "text/plain"}, "Привіт від Лілки!")
13 else
14 httpserver.respond(req.fd, 404, {}, "Not Found")
15 end
16end
17
18function lilka.draw()
19 display.fill_screen(display.color565(0, 0, 0))
20 display.set_cursor(0, 16)
21 display.print("HTTP-сервер запущено")
22end
- class httpserver
- static listen(port, backlog?)
Creates a TCP server socket and starts listening for HTTP connections.
- Parameters:
port (
integer) – Port to listen on (e.g. 80)backlog? (
integer) – Connection backlog (default: 5)
- Returns:
fd Server socket file descriptor, or nil on error
- Return type:
integer or nil- Returns:
? errmsg Error message on failure
- Return type:
str
- static accept(server_fd, timeout_ms?)
Waits for and accepts the next HTTP connection, parses the request.
The returned fd must be passed to httpserver.respond() or net.close().
- Parameters:
server_fd (
integer) – Server socket from httpserver.listen()timeout_ms? (
integer) – How long to wait in ms; -1 = block indefinitely
- Returns:
request Parsed request table, or nil on timeout/error
- Return type:
HttpRequest or nil- Returns:
? errmsg «timeout» | error description
- Return type:
str
- static respond(fd, status, headers?, body?)
Sends a complete HTTP/1.1 response and closes the client connection.
- Parameters:
fd (
integer) – Client socket fd from request.fdstatus (
integer) – HTTP status code (e.g. 200, 404)headers? (
dict[str, str]) – Extra response headersbody? (
str) – Response body (default: empty)
- static close(fd)
Closes a server socket (stops accepting new connections).
- Parameters:
fd (
integer) – Server socket file descriptor
- class HttpRequest
- fd: integer
Client socket fd — pass to httpserver.respond() or net.close()
- client_ip: str
Remote client IP address
- method: str
HTTP method (GET, POST, PUT, DELETE, …)
- path: str
URL path without query string
- query: str
Raw query string (may be empty)
- headers: dict[str, str]
Request headers (keys lowercased)
- body: str
Request body (empty string when none)