All Projects → ohler55 → Agoo

ohler55 / Agoo

Licence: mit
A High Performance HTTP Server for Ruby

Programming Languages

c
50402 projects - #5 most used programming language
ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to Agoo

Iodine
iodine - HTTP / WebSockets Server for Ruby with Pub/Sub support
Stars: ✭ 720 (+6.04%)
Mutual labels:  sse, server, webserver, rack
Butterfly Server
The Everything is Real-Time C# Backend for Single Page Applications
Stars: ✭ 247 (-63.62%)
Mutual labels:  server, websocket, webserver
Actionhero
Actionhero is a realtime multi-transport nodejs API Server with integrated cluster capabilities and delayed tasks
Stars: ✭ 2,280 (+235.79%)
Mutual labels:  server, websocket, https
Thin
A very fast & simple Ruby web server
Stars: ✭ 2,170 (+219.59%)
Mutual labels:  rails, server, rack
Telegraph
Secure Web Server for iOS, tvOS and macOS
Stars: ✭ 474 (-30.19%)
Mutual labels:  websocket, https, webserver
Rayo.js
Micro framework for Node.js
Stars: ✭ 170 (-74.96%)
Mutual labels:  server, clustering, webserver
Action Cable Signaling Server
🤝Rails implementation of a WebRTC Signaling Server
Stars: ✭ 118 (-82.62%)
Mutual labels:  rails, rails5, websocket
Libhv
🔥 比libevent、libuv更易用的国产网络库。A c/c++ network library for developing TCP/UDP/SSL/HTTP/WebSocket client/server.
Stars: ✭ 3,355 (+394.11%)
Mutual labels:  websocket, https, webserver
Graphjin
GraphJin - Build APIs in 5 minutes with GraphQL. An instant GraphQL to SQL compiler.
Stars: ✭ 1,264 (+86.16%)
Mutual labels:  graphql, graphql-server, rails
Agoo C
Agoo webserver in C.
Stars: ✭ 125 (-81.59%)
Mutual labels:  graphql, https, webserver
Eliasdb
EliasDB a graph-based database.
Stars: ✭ 611 (-10.01%)
Mutual labels:  graphql, graphql-server, clustering
Beetlex
high performance dotnet core socket tcp communication components, support TLS, HTTP, HTTPS, WebSocket, RPC, Redis protocols, custom protocols and 1M connections problem solution
Stars: ✭ 802 (+18.11%)
Mutual labels:  websocket, https, webserver
httpit
A rapid http(s) benchmark tool written in Go
Stars: ✭ 156 (-77.03%)
Mutual labels:  fast, benchmark, https
Omdb Graphql Wrapper
🚀 GraphQL wrapper for the OMDb API
Stars: ✭ 45 (-93.37%)
Mutual labels:  graphql, graphql-server, server
Graphql Ruby
GraphQL Ruby example for How To GraphQL
Stars: ✭ 231 (-65.98%)
Mutual labels:  graphql, graphql-server, rails
Pode
Pode is a Cross-Platform PowerShell web framework for creating REST APIs, Web Sites, and TCP/SMTP servers
Stars: ✭ 329 (-51.55%)
Mutual labels:  server, https, webserver
Wsgidav
A generic and extendable WebDAV server based on WSGI
Stars: ✭ 476 (-29.9%)
Mutual labels:  server, webserver
Brynet
A Header-Only cross-platform C++ TCP network library . Can use vcpkg(https://github.com/Microsoft/vcpkg/tree/master/ports/brynet) install
Stars: ✭ 674 (-0.74%)
Mutual labels:  websocket, https
Graphql Ruby
Ruby implementation of GraphQL
Stars: ✭ 4,931 (+626.22%)
Mutual labels:  graphql, rails
Libhttpserver
C++ library for creating an embedded Rest HTTP server (and more)
Stars: ✭ 464 (-31.66%)
Mutual labels:  ipv6, https

{}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

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].