EventMachineとは

eventmachineは、Rubyでイベント駆動I/Oや並行処理の機能を提供する低レイヤーなライブラリです。

簡単なechoサーバ

まずはgemをインストールします。以下GemfileのようにBundlerを使うか、あるいは単純にgem install eventmachineと叩いてください。

EventMachineを使って簡単なechoサーバを作成します。

前半のmodule EchoServerがサーバの定義、後半のEventMachine::runブロック内が実行本体です。EchoServerには何もincludeせず、おもむろにpost_init(クライアント接続時に実行される処理)とreceiver_data(クライアントからデータが送られてきた時に実行される処理)のふたつのメソッドを定義します。

EventMachone::runブロック内でEventMachine::start_serverを呼び、ホストとポート番号、そして先ほど定義したEchoServerモジュールを渡してやればこれだけでサーバが起動します。

実行ログは以下の通りです。

過去の記事、Rubyによるネットワーク通信の基礎 -Ruby- All Aboutでは似たような処理をTCPServerクラスを直接使って実装したので、比較してみてください。

EventMachineは他にも、EM.open_keyboardでユーザのキーボード入力を受け取ることもできます。

次のページでは、EM.deferEM::Deferrableを利用してイベント発生のタイミングで処理を実行させる方法を説明します。