# eventmachine/eventmachine

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/eventmachine-eventmachine).**

4,283 stars · 633 forks · Ruby · NOASSERTION

## Links

- GitHub: https://github.com/eventmachine/eventmachine
- awesome-repositories: https://awesome-repositories.com/repository/eventmachine-eventmachine.md

## Description

EventMachine is a reactor-pattern network framework for Ruby that provides an asynchronous I/O library for performing non-blocking network and file operations. It functions as a network server framework used to build scalable TCP and UDP servers and clients that process multiple simultaneous requests.

The framework implements a concurrency model that dispatches network events to registered handlers using a single-threaded event loop. This approach allows for the management of high-concurrency network connections without the overhead of multi-threaded programming.

The library covers the development of event-driven servers, asynchronous network clients, and network proxy implementations. It also provides capabilities for monitoring files and networks to trigger actions when specific events occur.

## Tags

### Networking & Communication

- [Ruby Implementations](https://awesome-repositories.com/f/networking-communication/event-driven-networking/ruby-implementations.md) — Provides a reactor-pattern network framework for Ruby to handle high-concurrency connections using a non-blocking event loop.
- [Asynchronous Network Clients](https://awesome-repositories.com/f/networking-communication/asynchronous-network-clients.md) — Provides libraries and interfaces for performing non-blocking, multi-handle network data transfers as a client. ([source](https://github.com/eventmachine/eventmachine/blob/master/README.md))
- [IO Multiplexing](https://awesome-repositories.com/f/networking-communication/connection-multiplexing/io-multiplexing.md) — Uses system calls like select or epoll to monitor multiple network sockets on a single thread.
- [Event-Driven Networking](https://awesome-repositories.com/f/networking-communication/event-driven-networking.md) — Handles network requests and system events asynchronously using a high-performance runtime model for concurrency. ([source](https://github.com/eventmachine/eventmachine/blob/master/Gemfile))
- [Reactor Pattern Network Servers](https://awesome-repositories.com/f/networking-communication/high-performance-networking/reactor-pattern-network-servers.md) — Provides a framework for building scalable network servers using the reactor pattern and non-blocking I/O. ([source](https://github.com/eventmachine/eventmachine/blob/master/README.md))
- [Reactor Patterns](https://awesome-repositories.com/f/networking-communication/reactor-patterns.md) — Implements an event-driven loop that dispatches incoming network events to registered handlers using a single-threaded reactor.
- [Event-Driven Server Frameworks](https://awesome-repositories.com/f/networking-communication/real-time-communication/event-driven-server-frameworks.md) — Provides a framework for building applications that handle concurrent connections and event-driven communication.
- [TCP Server Frameworks](https://awesome-repositories.com/f/networking-communication/tcp-server-frameworks.md) — Provides the core infrastructure for building high-performance TCP and UDP servers.
- [Traffic Routing Proxies](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-infrastructure-configuration/network-infrastructure/traffic-routing-proxies.md) — Routes network traffic through intermediary servers to manage connection paths with custom logic. ([source](https://github.com/eventmachine/eventmachine#readme))
- [Network Proxies](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-proxying-tools/network-proxies.md) — Acts as an intermediary between clients and servers to manage traffic and connection routing.
- [Proxy Server Implementations](https://awesome-repositories.com/f/networking-communication/proxy-server-implementations.md) — Implements proxy server protocols and logic to route traffic between clients and servers. ([source](https://github.com/eventmachine/eventmachine/blob/master/README.md))

### Software Engineering & Architecture

- [Reactor Pattern Event Loops](https://awesome-repositories.com/f/software-engineering-architecture/reactor-pattern-event-loops.md) — Implements a single-threaded event loop that waits for network events and dispatches them to registered callbacks.
- [Single-Threaded Execution Models](https://awesome-repositories.com/f/software-engineering-architecture/single-threaded-execution-models.md) — Handles thousands of simultaneous connections on one thread to eliminate locking and context switching overhead.

### Operating Systems & Systems Programming

- [Asynchronous I/O Libraries](https://awesome-repositories.com/f/operating-systems-systems-programming/asynchronous-i-o-libraries.md) — Provides a non-blocking interface for system I/O operations via a reactor event loop.

### System Administration & Monitoring

- [Event-Driven I/O](https://awesome-repositories.com/f/system-administration-monitoring/administrative-operations/linux-system-administration/networking/connection-lifecycle-management/parallel-network-i-o/event-driven-i-o.md) — Manages network connections and data transfer using an asynchronous I/O framework with event notification loops. ([source](https://github.com/eventmachine/eventmachine#readme))

### User Interface & Experience

- [Asynchronous Network Callbacks](https://awesome-repositories.com/f/user-interface-experience/event-handling/asynchronous-network-callbacks.md) — Triggers Ruby blocks of code immediately in response to network I/O events to maintain non-blocking flows.

### Part of an Awesome List

- [Ruby Bindings](https://awesome-repositories.com/f/awesome-lists/devtools/c-bindings/ruby-bindings.md) — Binds high-performance network logic written in C to Ruby for faster event processing.
- [Concurrency and Parallelism](https://awesome-repositories.com/f/awesome-lists/devtools/concurrency-and-parallelism.md) — Library for event-driven I/O and lightweight concurrency.
- [Ruby Frameworks and Tools](https://awesome-repositories.com/f/awesome-lists/devtools/ruby-frameworks-and-tools.md) — Event-driven library for Ruby.
