Browse Source

Write docs

Jake Howard 4 years ago
  1. 40


@ -1,4 +1,42 @@
# lantern
Write a web server in any language
Write a web server in _almost_ any language.
## Usage
$ lantern --help
usage: lantern [-h] [--port PORT] handler
positional arguments:
handler Executable to run
optional arguments:
-h, --help show this help message and exit
--port PORT Port to listen on
`handler` should be your executable program. It should be executable without any additional arguments (eg `./`).
## How it works
When a request is sent to lantern, the handler program is called, and request data passed through `stdin`. Anything passed to `stdout` will be returned to the client. This data must be standard text / HTML.
You can't really write it in a language that doesn't support reading from `stdin` / writing to `stdout`, but almost all languages support this.
### Request Data
Request data is fetched from sanic, and serialized to JSON. THe exact keys serialized can be found in `lantern/`, and descriptions can be found in the [sanic docs](
Additionally, there's also the [useragent]( plugin installed, which adds useragent data to the request at `useragent`.
## Why
I build this simply for testing, I wanted to have a play around with [sanic](, and needed something to help me do [this project]().
## _"Can I use this in production?"_
Technically yes, there's nothing stopping you, But please, __Please__ don't!
Whilst thanks to [sanic]( it's super fast, it's not designed to be secure, scalable, or even particularly stable.
If you want to use a language in production, use a web framework in that language, eg [Django]( or [Hyper](
## Examples
See the `examples/` directory for some basic examples. eg:
$ lantern examples/