A fast concurrent HTTP/WebSocket server for Ruby with built-in Pub/Sub, built on the facil.io C framework.
Iodine is a concurrent web server for Ruby applications that excels at real-time communication, offering native HTTP, WebSocket, and Server-Sent Events support along with a built-in Pub/Sub system. It solves the need for high-performance, scalable real-time features in Ruby apps by leveraging the speed of the facil.io C framework to handle thousands of connections efficiently.
Ruby developers building real-time applications such as chat systems, live dashboards, or collaborative tools that require WebSocket or Pub/Sub capabilities, especially those deploying on Linux/Unix servers.
Developers choose Iodine for its exceptional performance, native real-time features without external dependencies, and seamless integration with the Rack ecosystem, making it a robust alternative to servers like Puma for real-time workloads.
iodine - HTTP / WebSockets Server for Ruby with Pub/Sub support
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Handles over 20,000 concurrent connections on Linux by leveraging the facil.io C framework, making it ideal for real-time, high-traffic applications.
Built-in support for WebSockets, SSE, and Pub/Sub without external dependencies, simplifying development of chat apps or live dashboards.
Serves static files directly from C with gzip pre-compressed asset support, bypassing Ruby for faster performance and reduced memory usage.
Allows reloading worker processes via SIGUSR1 signal to mitigate memory fragmentation without a full server restart, improving long-term stability.
Automatically handles Sequel and ActiveRecord connections in forking environments, preventing common issues in multi-process setups.
The README admits known issues with TLS/SSL and explicitly warns against using it in production, limiting secure deployment options without external proxies.
Does not support streaming when using Rack, blocking data transmission until loops complete, which hinders real-time response handling for streaming APIs.
Optimized only for Linux/Unix systems with poor support for Windows or Solaris, restricting deployment flexibility and ecosystem compatibility.
Requires specific OpenSSL versions (≥1.1.0) and has installation quirks, adding overhead and potential false positives during compilation for secure setups.