Crowdhailer

Crowdhailer

Creator of Raxx

Ace: HTTP/2 webserver

The latest release of Ace (0.10.0) includes serving content over HTTP/2.


I have started writing a webserver to teach my self more about webservers. Ace

The easiest thing is to probably summarize the plan here and if you want more details head on over to the README.

  1. To take this obviously deficient TCP echo server that I wrote as a beginner elixir developer and create a fully fledged HTTP server.
  2. Keep reasonable notes of progress so others can learn about how to build a web server in elixir.
  3. See what progress I have made in a year as an elixir developer.

Currently I have an issue which is confusing me (yes even at this beginner stage).
When I restart the server it often fails because the port is currently in use.
I call gen_tcp.close and am unsure why there is a delay in the port being properly closed?
Give the computer a few moments and the port does eventually become available again.

I know this is probably a help question but I didn’t want to post about my project twice and there are more things coming this way soon

Most Liked

Crowdhailer

Crowdhailer

Creator of Raxx

The latest release of Ace (0.10.0) includes serving content over HTTP/2.

Instructions for getting started can be found in this guide.
An example app is available here.

Features available at this point are

  • Stream isolation; one process per stream
  • Bidirectional streaming; stream data too and from clients
  • TLS(SSL) support via ALPN; data encrypted in transit
  • Raxx interface; simplicitfy for request/response interactions

Also see the Roadmap for remaining features.

An adapter for plug and therefore phoenix is not something I am looking at yet. My preference is to shore up the foundations prior to a 1.0 release. However if anyone wanted to look at this I would be happy to offer some help getting through the codebase.

Any feedback would be great. At this point I am particularly looking for comments around the API.
At this point the project is very alpha. However I hope to stabilise it quickly.

Crowdhailer

Crowdhailer

Creator of Raxx

I talked about Ace at Elixir.LDN, the videos is available now.

The talk covers

  • The basics of HTTP/2
  • Design decisions made by Ace, in particular how to make streaming easy
  • Some chosen implementation details
  • Next steps, including a plug adapter, GRPC implementation and GenStage integration
Crowdhailer

Crowdhailer

Creator of Raxx

Ace 0.11.0 is now tested with h2spec.

In strict mode Ace passes 143/146 of the h2spec test suite.
The remaining issues are all around hpack and choices on handling compression errors

For the full list of changes see the changelog.

OvermindDL1

OvermindDL1

Oooo, that is awesome!!!

Crowdhailer

Crowdhailer

Creator of Raxx

Ace 0.14.8 Supports HTTP/2 upgrade.

Application layer protocol notification(ALPN) support now means that a single endpoint will serve content over HTTP/1 or HTTP/2 dependant on the client. This was the final step to make Ace useful to most web applications. Test it out by using Ace.HTTP.Service.

Where Next?

Popular in Libraries Top

Jskalc
Hi! Today, after a couple weeks of development I’ve released v0.1 of LiveVue. It’s a seamless integration of Vue and Phoenix LiveView, i...
New
tmbb
I’ve been working on two packages (not on hex.pm yet) to build admin interfaces for phoenix apps: bureaucrat - which contains a bunch ...
New
kevinlang
Hey all, We have made an Ecto3 Adapter for SQLite3, ecto_sqlite3! We have successfully on-boarded the full suite of integration tests (...
New
woylie
I released Doggo, a collection of unstyled Phoenix components. Features Unstyled Phoenix components. Storybook that can be added to...
New
tmbb
I’ve published the first version of my Makeup library. It’s a syntax highlighter for Elixir in the spirit of Pygments, Currently it highl...
New
mbuhot
EctoJob A transactional job queue built with Ecto, PostgreSQL and GenStage Available on Hex.pm: ecto_job | Hex Docs: API Reference — ec...
New
woylie
Flop is an Elixir library that applies filtering, ordering and pagination parameters to your Ecto queries. offset-based pagination with...
New
msaraiva
Surface is an experimental library built on top of Phoenix LiveView and its new LiveComponent API that aims to provide a more declarative...
564 42633 214
New
OvermindDL1
I created a new library (rather I pulled out a couple files from my big project), it manages an operating system PID file for the BEAM. ...
New
maltoe
Hello! Came here to announce ChromicPDF, a pet project PDF generator I’ve been working on for the past few months. Why another PDF gener...
New

Other popular topics Top

JDanielMartinez
Hi! May someone helps me, please! I have two apps into an umbrella project: the first one is Database, which manages queries, and the se...
New
yurko
Here are few pieces of (common) Linux knowledge that we use for reasonably small one server apps. We use Ubuntu but this should work for ...
New
axelson
This post is a wiki (feel free to hit the edit button near the bottom right of this post to add your own changes!) This post collects co...
239 45766 226
New
hariharasudhan94
I would like to know what is the best IDE for elixir development?
New
grych
Hi folks, Few months ago I have announced the proof-of-concept of the library to manipulate the browsers DOM objects directly from Elixi...
639 49522 488
New
New
aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
electic
Hi, I am new to Elixir. I am trying to use the DateTime component to insert a date into MySQL however the there seems to be no way to fo...
New
Nvim
Elixir appears to be a superior language to Python. I don’t see any advantage of Python over Elixir. Are there any?
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New

Sub Categories:

We're in Beta

About us Mission Statement