Agoo

A High Performance HTTP Server for Ruby
Alternatives To Agoo
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Frp74,517182 days ago93October 24, 2023103apache-2.0Go
A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
Caddy50,840460a day ago382October 11, 2023139apache-2.0Go
Fast and extensible multi-platform HTTP/1-2-3 web server with automatic HTTPS
Nps27,742
3 days ago53October 09, 2021471gpl-3.0Go
一款轻量级、高性能、功能强大的内网穿透代理服务器。支持tcp、udp、socks5、http等几乎所有流量转发,可用来访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析、内网socks5代理等等……,并带有功能强大的web管理端。a lightweight, high-performance, powerful intranet penetration proxy server, with a powerful web management terminal.
Vapor23,393
75a day agoMarch 07, 202391mitSwift
💧 A server-side Swift HTTP web framework.
Postgrest21,405
410 hours ago37July 12, 2022214mitHaskell
REST API for any Postgres database
Aiohttp14,1377,3557,61414 hours ago228November 26, 2023496otherPython
Asynchronous HTTP client/server framework for asyncio and Python
Http Server13,02246,30310,02311 days ago49May 31, 2022141mitJavaScript
a simple zero-configuration command-line http server
Chisel10,2262812 days ago31August 20, 2023195mitGo
A fast TCP/UDP tunnel over HTTP
Warp8,697734915 days ago38September 27, 2023222mitRust
A super-easy, composable, web server framework for warp speeds.
Proxygen7,943
10 hours ago1July 05, 202331otherC++
A collection of C++ HTTP libraries including an easy to use HTTP server.
Alternatives To Agoo
Select To Compare


Alternative Project Comparisons
Readme

{}j Agoo

Build Status Gem Version Gem TideLift

A High Performance HTTP Server for Ruby

Usage

Rack

require 'agoo'

Agoo::Server.init(6464, 'root')

class MyHandler
  def call(req)
    [ 200, { }, [ "hello world" ] ]
  end
end

handler = MyHandler.new
Agoo::Server.handle(:GET, "/hello", handler)
Agoo::Server.start()

# To run this example type the following then go to a browser and enter a URL
# of localhost:6464/hello.
#
# ruby hello.rb

GraphQL

require 'agoo'

class Query
  def hello
    'hello'
  end
end

class Schema
  attr_reader :query

  def initialize
    @query = Query.new()
  end
end

Agoo::Server.init(6464, 'root', thread_count: 1, graphql: '/graphql')
Agoo::Server.start()
Agoo::GraphQL.schema(Schema.new) {
  Agoo::GraphQL.load(%^type Query { hello: String }^)
}
sleep

# To run this GraphQL example type the following then go to a browser and enter
# a URL of localhost:6464/graphql?query={hello}
#
# ruby hello.rb

Installation

gem install agoo

Using agoo as server for rails

As agoo supports rack compatible apps you can use it for rails applications:

Add agoo to the Gemfile:

# Gemfile
gem 'agoo'

Install bundle:

$ bundle install

Start rails with agoo as server:

$ rails server -u agoo

Enjoy the increased performance!

What Is This?

Agoo is Japanese for a type of flying fish. This gem flies. It is a high performance HTTP server that serves static resource at hundreds of thousands of fetches per second. A simple hello world Ruby handler at over 100,000 requests per second on a desktop computer. That places Agoo at about 85 times faster than Sinatra and 1000 times faster than Rails. In both cases the latency was two orders of magnitude lower or more. Checkout the benchmarks. Note that the benchmarks had to use a C program called Perfer to hit the Agoo limits. Ruby benchmarks driver could not push Agoo hard enough.

Agoo supports the Ruby rack API which allows for the use of rack compatible gems such as Hanami and Rails. Agoo also supports WebSockets and SSE.

Agoo is not available on Windows.

News

  • Version 2.11.0 supports GraphQL subscriptions. TLS (SSL,HTTPS) support added. Examples for both. Related, the graphql-benchmark repo was given to the-benchmarker.

  • Agoo has a new GraphQL module with a simple, easy to use API. Checkout the hello or song examples. An Instrumental Intro to GraphQL with Ruby is a walk through.

  • Agoo takes first place as the highest throughput on web-frameworks benchmarks. Latency was not at the top but release 2.5.2 improves that. The Agoo-C benchmarks it at the top. The fastest web server across all languages.

  • Clustered Agoo is ready. For slower application and a machine with multiple cores a significant improvement is performance is realized. The application must be stateless in that no data is shared between workers.

  • WebSocket and SSE are supported and a PR has been submitted to updated the Rack spec. Go over to the proposed Rack extension and give it a look and a thumbs-up or heart if you like it.

  • Agoo now serves Rails static assets more than 8000 times faster than the default Puma. Thats right, 8000 times faster.

Releases

See file:CHANGELOG.md

Releases are made from the master branch. The default branch for checkout is the develop branch. Pull requests should be made against the develop branch.

Support

Get supported Agoo with a Tidelift Subscription. Security updates are supported.

Links

Popular Server Projects
Popular Http Projects
Popular Networking Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Ruby
C
Ruby On Rails
Server
Http
Graphql
Websocket
Benchmark
Performance
Webserver
Https
Rack
Sse
Ipv6
Graphql Server