peburrows / River
Licence: mit
An HTTP/2 (HTTP2) client for Elixir (a work in progress!)
Stars: ✭ 78
Programming Languages
elixir
2628 projects
Projects that are alternatives of or similar to River
Docker Swift Apns
A collection of Docker images to build APNS providers in Swift
Stars: ✭ 34 (-56.41%)
Mutual labels: http2
Go Apns2
Go package for HTTP/2 Apple Push Notification Service.
Stars: ✭ 53 (-32.05%)
Mutual labels: http2
Esa Restlight
ESA Restlight is a lightweight and rest-oriented web framework.
Stars: ✭ 67 (-14.1%)
Mutual labels: http2
Express Security
nodejs + express security and performance boilerplate.
Stars: ✭ 37 (-52.56%)
Mutual labels: http2
Finagle
A fault tolerant, protocol-agnostic RPC system
Stars: ✭ 8,126 (+10317.95%)
Mutual labels: http2
Cloudflare Worker Preact Pwa
Cloudflare worker running a Preact Progressive Web App
Stars: ✭ 57 (-26.92%)
Mutual labels: http2
Siler
⚡ Flat-files and plain-old PHP functions rockin'on as a set of general purpose high-level abstractions.
Stars: ✭ 1,056 (+1253.85%)
Mutual labels: http2
Katwebx
An extremely fast static web server and reverse proxy for the modern web.
Stars: ✭ 39 (-50%)
Mutual labels: http2
Nico
A HTTP2 web server for reverse proxy and single page application, automatically apply for ssl certificate, Zero-Configuration.
Stars: ✭ 43 (-44.87%)
Mutual labels: http2
Xmnetworking
A lightweight but powerful network library with simplified and expressive syntax based on AFNetworking.
Stars: ✭ 980 (+1156.41%)
Mutual labels: http2
Akka Http
The Streaming-first HTTP server/module of Akka
Stars: ✭ 1,163 (+1391.03%)
Mutual labels: http2
Grpcc
A gRPC cli interface for easy testing against gRPC servers
Stars: ✭ 1,078 (+1282.05%)
Mutual labels: http2
Setup Nginx Webserver
🚀Setup a perfect webserver on CentOS/Redhat 7.x guide with understanding.
Stars: ✭ 65 (-16.67%)
Mutual labels: http2
River
NOTE: River is a work in progress and should be considered extremely beta.
River is a general-purpose HTTP client with eventual hopes of full HTTP/2 support (along with support for HTTP/1.1). It is built from the ground up with three major goals:
- be fully compliant with RFC 7540
- be simple and straightforward to use, in the vein of HTTPoison
- be awesome, in the same way that Go's http library (which has built-in, transparent support for
HTTP/2
) is awesome.
Installation
- Add River to your list of dependencies in
mix.exs
:
def deps do
[{:river, "~> 0.0.6"}]
end
- Ensure River is started before your application:
def application do
[applications: [:river]]
end
Caveats
- Currently, River only knows how to make
HTTP/2
requests tohttps://
endpoints. Soon, I'll add the ability to make a request via the Upgrade header so that requests tohttp://
endpoints will work as well. - River doesn't currently speak
HTTP/1.x
. Once I finish up basicHTTP/2
support,HTTP1.x
is next on the roadmap. The goal when using River in your project is that you should not need to know whether the underlying connection is usingHTTP/2
orHTTP/1.x
. - River is as beta as it gets, and under active development with no promises of anything being backwards compatible 😬 (until we hit
v1.0
, of course)
Goals
- [x] Basic HTTP/2 support
- [ ] HTTP/1 --> HTTP/2 upgrading
- [ ] Full HTTP/2 support
- [ ] Full HTTP/1.x support
Basic Usage
Simple GET
River.get("https://http2.golang.org/")
=> {:ok,
%River.Response{__status: :ok,
body: "<html>\n<body>\n<h1>Go...",
closed: true, code: 200, content_type: "text/html; charset=utf-8",
headers: headers: [{":status", "200"},
{"content-type", "text/html; charset=utf-8"},
{"content-length", "1708"},
{"date", "Fri, 30 Sep 2016 04:26:34 GMT"}]}}
Simple PUT
River.put("https://example.com/", "hello world")
=> {:ok, %River.Response{...}}
Request with timeout
# timeout unit is milliseconds
River.get("https://http2.golang.org/", timeout: 10)
=> {:error, :timeout}
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].