HTTP Icon

HTTP

HTTP (Hypertext Transfer Protocol) is the standard for communication across the web.
51 Stories
All Topics

Eve Martin ably.io

WebSockets vs Server-Sent Events

Eve Martin:

Sometimes we need information from our servers instantaneously. For this sort of use case our usual AJAX request/response doesn’t cut it. Instead, we need a push-based method like WebSockets, Long Polling, Server-Sent Events (SSE) and - more recently - HTTP2 push. In this article, we compare two methods for implementing realtime - WebSockets and Server-Sent Events, with information on which to use and when.

This is a nice, reasoned comparison of the two technologies: advantages, stumbling blocks, open source resources, etc.

Go github.com

Use HTTP/2 Server Push to create fast and idiomatic client-driven REST APIs

Around the advent of GraphQL, I found myself asking its proponents if HTTP/2 solves any of the same performance problems. Most of the answers were along the lines of, “it might, but that hasn’t been realized yet.” Well, Vulcain is here to realize it.

Over the years, several formats have been created to fix performance bottlenecks impacting web APIs: over fetching, under fetching, the n+1 problem

Current solutions for these problems (GraphQL, JSON:API’s embedded resources and sparse fieldsets, …) are smart network hacks for HTTP/1. But these hacks come with (too) many drawbacks when it comes to HTTP cache, logs and even security.

Fortunately, thanks to the new features introduced in HTTP/2, it’s now possible to create true REST APIs fixing these problems with ease and class! Here comes Vulcain!

See also their comparison between Vulcain, GraphQL, and API formats.

Diego Bernardes github.com

PipeHub - A programmable proxy server

The core idea of this project is to do more with less. PipeHub being a programmable proxy allow users to extend and customize it as needed. Features found in other servers can be added with Go packages.

Not ready for production, but interesting nonetheless. Not sure if PipeHub is something that might serve you well? Here’s some pretty good advice to help you decide:

If your requirement is covered by built-in features present on other servers like Nginx and Caddy, you’re better of with then. PipeHub shines when you need to add logic that traverses the responsibility of multiple servers…

Elixir elixir-lang.org

Mint – a new HTTP client for Elixir

Mint is a new low-level HTTP client that aims to provide a small and functional core that others can build on top. Mint is connection based: each connection is a single struct with an associated socket belonging to the process that started the connection.

This looks like an excellent base layer for the Elixir community to build HTTP clients upon. Take note: The core Elixir team is so good at laying foundations like this. Plug, for example, is a near-perfect base layer for HTTP servers.

Culture daniel.haxx.se

QUIC will officially become HTTP/3

We recently talked with Daniel Stenberg about HTTP/2 and QUIC, so this news comes with little surprise looking back on that conversation with hindsight.

The protocol that’s been called HTTP-over-QUIC for quite some time has now changed name and will officially become HTTP/3. This was triggered by this original suggestion by Mark Nottingham.

On November 7, 2018 Dmitri of Litespeed announced that they and Facebook had successfully done the first interop ever between two HTTP/3 implementations. Mike Bihop’s follow-up presentation in the HTTPbis session on the topic can be seen here. The consensus in the end of that meeting said the new name is HTTP/3!

Data visualization discuss.httparchive.org

The HTTP Archive got a huge upgrade 💪

This was announced in late March, but I missed it back then so maybe you did too.

Our goal was to more easily enable anyone to explore the health of the web as a whole. Not just data-mining SQL gurus or statisticians, but everyone with a vested interest in the state of the web.

An excellent goal, indeed. How did they do? Well, they added a bunch of awesome reports and consolidated traffic data between mobile and desktop devices. If you hadn’t bookmarked this site previously, now is the time.

The HTTP Archive got a huge upgrade 💪

Nuster Cache Server github.com

NuSTER – an HTTP based, user facing, RESTful NoSQL server

NuSTER can be used as a RESTful NoSQL cache server, using HTTP POST/GET/DELETE to set/get/delete Key/Value object. It can be used as an internal NoSQL cache sits between your application and database like Memcached or Redis as well as a user facing NoSQL cache that sits between end user and your application. It supports headers, cookies, so you can store per-user data to same endpoint.

Go github.com

A zero-config tool to make locally-trusted dev certs with any names you'd like

A common discrepancy between our dev and prod environments is that prod uses HTTPS while dev is stuck on HTTP because reasons:

Using certificates from real CAs for development can be dangerous or impossible (for hosts like localhost or 127.0.0.1), but self-signed certificates cause trust errors. Managing your own CA is the best solution, but usually involves arcane commands, specialized knowledge and manual steps.

I’ve considered getting my dev environment on HTTPS but have always stopped at “Managing your own CA”. 🙅‍♂️ Not gonna do it. But!

mkcert automatically creates and installs a local CA in the system root store, and generates locally-trusted certificates.

mkcert currently supports macOS and Linux. Windows support coming next.

Go quii.gitbook.io

Learn Go with tests: HTTP server

Chris James:

Write a simple web server in Go with test driven development. Learn how to use mocking to let you break the problem down into small iterative chunks. All using standard library, source code is available to read.

The linked page is a sub-section of the Learn Go with tests GitBook. Do you enjoy TDD and want to learn Go? Or do you enjoy Go and want to learn TDD? Either way, this looks like a great (WIP) resource.

Diego Bernardes github.com

Flare – a service that notifies of HTTP endpoint changes

Flare listens to changes on HTTP endpoints and notify subscripted clients about the changes. It help reduce the pressure on APIs by avoiding the clients to do pooling requests to search for new/changed content and the need of the APIs to develop workers to notify the clients about the.

Pitched as useful for microservice architectures, but could find lots of uses outside of that context too.

Culture daniel.haxx.se

curl turns 20! 🎂

At this time in 1998 Titanic was winning 11 Oscars, My Heart Will Go On was topping the music charts, and Daniel Stenberg was uploading the first public release of one of the most useful tools in Internet history.

In this birthday post, Daniel walks down memory lane and says what those first few years were like:

It was far from an immediate success. An old note mentions how curl 4.8 (released the summer of 1998) was downloaded more than 300 times from the site.

We talked about curl on The Changelog when it was 17 years old. I think It’s time to bring Daniel back on to celebrate the big Two Oh. 🎊

  0:00 / 0:00