Packages
mist
0.4.1
6.0.3
6.0.2
6.0.1
6.0.0
5.0.4
5.0.3
5.0.2
5.0.1
5.0.0
5.0.0-rc1
4.0.7
4.0.6
4.0.5
4.0.4
4.0.3
4.0.2
4.0.1
4.0.0
3.0.0
2.0.0
1.2.0
1.1.0
1.0.0
1.0.0-rc3
1.0.0-rc2
1.0.0-rc1
0.17.0
0.15.0
0.14.3
0.14.2
0.14.1
0.14.0
0.13.2
0.13.1
0.13.0
0.12.0
0.11.0
0.10.0
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.3
0.8.2
0.8.1
0.8.0
0.7.1
0.7.0
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.3
a misty Gleam web server
Current section
Files
Jump to
Current section
Files
README.md
# mist
A (hopefully) nice, basic Gleam web server
## Installation
This package can be added to your Gleam project:
```sh
gleam add mist
```
and its documentation can be found at <https://hexdocs.pm/mist>.
## Usage
Right now there are 2 options. Let's say you want a "simple" HTTP server that
you can customize to your heart's content. In that case, you want:
```gleam
pub fn main() {
assert Ok(_) = mist.serve(
8080,
http.handler(fn(req: Request(BitString)) {
response.new(200)
|> response.set_body(bit_builder.from_bit_string(<<"hello, world!":utf8>>))
})
)
erlang.sleep_forever()
}
```
Maybe you also want to work with websockets. Maybe those should only be
upgradable at a certain endpoint. For that, you can use `http_func`.
For example:
```gleam
pub fn main() {
assert Ok(_) = serve(
8080,
http.handler_func(fn(req: Request(BitString)) {
case request.path_segments(req) {
["echo", "test"] -> Upgrade(websocket.echo_handler)
["home"] ->
response.new(200)
|> response.set_body(bit_builder.from_bit_string(<<"sup home boy":utf8>>))
|> HttpResponse
_ ->
response.new(200)
|> response.set_body(bit_builder.from_bit_string(<<"Hello, world!":utf8>>))
|> HttpResponse
}
})
)
erlang.sleep_forever()
}
```
If you need something a little more complex or custom, you can always use the
helpers exported by the various `glisten`/`mist` modules.
## Benchmarks
These are currently located [here](https://github.com/rawhat/http-benchmarks)