{"id":13400448,"url":"https://github.com/eventmachine/eventmachine","last_synced_at":"2025-10-21T13:06:07.049Z","repository":{"id":423420,"uuid":"43371","full_name":"eventmachine/eventmachine","owner":"eventmachine","description":"EventMachine: fast, simple event-processing library for Ruby programs","archived":false,"fork":false,"pushed_at":"2024-09-16T19:37:10.000Z","size":2665,"stargazers_count":4269,"open_issues_count":208,"forks_count":629,"subscribers_count":110,"default_branch":"master","last_synced_at":"2025-03-10T02:53:44.060Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eventmachine.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2008-08-17T18:35:57.000Z","updated_at":"2025-03-05T12:14:36.000Z","dependencies_parsed_at":"2023-07-05T14:53:12.492Z","dependency_job_id":"d15c913e-0e59-4739-8772-3016adab7b1c","html_url":"https://github.com/eventmachine/eventmachine","commit_stats":{"total_commits":1192,"total_committers":189,"mean_commits":6.306878306878307,"dds":0.700503355704698,"last_synced_commit":"e7320417cf291cc6a69471a64ecae5ddb5367715"},"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eventmachine%2Feventmachine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eventmachine%2Feventmachine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eventmachine%2Feventmachine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eventmachine%2Feventmachine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eventmachine","download_url":"https://codeload.github.com/eventmachine/eventmachine/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243152651,"owners_count":20244653,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-30T19:00:52.134Z","updated_at":"2025-10-21T13:06:02.012Z","avatar_url":"https://github.com/eventmachine.png","language":"Ruby","readme":"# About EventMachine  [![Build Status](https://github.com/eventmachine/eventmachine/actions/workflows/workflow.yml/badge.svg)](https://github.com/eventmachine/eventmachine/actions) [![Code Climate Maintainability](https://api.codeclimate.com/v1/badges/e9b0603462905d5b9118/maintainability)](https://codeclimate.com/github/eventmachine/eventmachine/maintainability)\n\n\n## What is EventMachine ##\n\nEventMachine is an event-driven I/O and lightweight concurrency library for Ruby.\nIt provides event-driven I/O using the [Reactor pattern](http://en.wikipedia.org/wiki/Reactor_pattern),\nmuch like [JBoss Netty](http://www.jboss.org/netty), [Apache MINA](http://mina.apache.org/),\nPython's [Twisted](http://twistedmatrix.com), [Node.js](http://nodejs.org), libevent and libev.\n\nEventMachine is designed to simultaneously meet two key needs:\n\n * Extremely high scalability, performance and stability for the most demanding production environments.\n * An API that eliminates the complexities of high-performance threaded network programming,\n   allowing engineers to concentrate on their application logic.\n\nThis unique combination makes EventMachine a premier choice for designers of critical networked\napplications, including Web servers and proxies, email and IM production systems, authentication/authorization\nprocessors, and many more.\n\nEventMachine has been around since the early 2000s and is a mature and battle-tested library.\n\n\n## What EventMachine is good for? ##\n\n * Scalable event-driven servers. Examples: [Thin](https://github.com/macournoyer/thin/) or [Goliath](https://github.com/postrank-labs/goliath/).\n * Scalable asynchronous clients for various protocols, RESTful APIs and so on. Examples: [em-http-request](https://github.com/igrigorik/em-http-request) or [amqp gem](https://github.com/ruby-amqp/amqp).\n * Efficient network proxies with custom logic. Examples: [Proxymachine](https://github.com/mojombo/proxymachine/).\n * File and network monitoring tools. Examples: [eventmachine-tail](https://github.com/jordansissel/eventmachine-tail) and [logstash](https://github.com/logstash/logstash).\n\n\n\n## What platforms are supported by EventMachine? ##\n\nEventMachine supports Ruby 2.0.0 and later (see tested versions at \n[.github/workflows/workflow.yml](.github/workflows/workflow.yml)). It runs on JRuby and **works well on Windows** \nas well as many operating systems from the Unix family (Linux, Mac OS X, BSD flavors).\n\n\n\n## Install the gem ##\n\nInstall it with [RubyGems](https://rubygems.org/)\n\n    gem install eventmachine\n\nor add this to your Gemfile if you use [Bundler](http://gembundler.com/):\n\n    gem 'eventmachine'\n\n\n\n## Getting started ##\n\nFor an introduction to EventMachine, check out:\n\n * [blog post about EventMachine by Ilya Grigorik](http://www.igvita.com/2008/05/27/ruby-eventmachine-the-speed-demon/).\n * [EventMachine Introductions by Dan Sinclair](http://everburning.com/news/eventmachine-introductions.html).\n\n\n### Server example: Echo server ###\n\nHere's a fully-functional echo server written with EventMachine:\n\n```ruby\n require 'eventmachine'\n\n module EchoServer\n   def post_init\n     puts \"-- someone connected to the echo server!\"\n   end\n\n   def receive_data data\n     send_data \"\u003e\u003e\u003eyou sent: #{data}\"\n     close_connection if data =~ /quit/i\n   end\n\n   def unbind\n     puts \"-- someone disconnected from the echo server!\"\n   end\nend\n\n# Note that this will block current thread.\nEventMachine.run {\n  EventMachine.start_server \"127.0.0.1\", 8081, EchoServer\n}\n```\n\n\n## EventMachine documentation ##\n\nCurrently we only have [reference documentation](http://rubydoc.info/github/eventmachine/eventmachine/frames) and a [wiki](https://github.com/eventmachine/eventmachine/wiki).\n\n\n## Community and where to get help ##\n\n * Join the [mailing list](http://groups.google.com/group/eventmachine) (Google Group)\n * Join IRC channel #eventmachine on irc.freenode.net\n\n\n## License and copyright ##\n\nEventMachine is copyrighted free software made available under the terms\nof either the GPL or Ruby's License.\n\nCopyright: (C) 2006-07 by Francis Cianfrocca. All Rights Reserved.\n\n\n## Alternatives ##\n\nIf you are unhappy with EventMachine and want to use Ruby, check out [Celluloid](https://github.com/celluloid/celluloid).\n","funding_links":[],"categories":["Ruby","Developer Tools","Web 后端","Gems","Concurrency","High Performance","Concurrency and Parallelism","Uncategorized"],"sub_categories":["Concurrent Processing","Misc","Uncategorized"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feventmachine%2Feventmachine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feventmachine%2Feventmachine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feventmachine%2Feventmachine/lists"}