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.defer
とEM::Deferrable
を利用してイベント発生のタイミングで処理を実行させる方法を説明します。