kakts-log

programming について調べたことを整理していきます

node Unhandling 'error' event というエラーがでたときの対処法

node.jsでHTTP通信をするためのサーバーとクライアントを作りました

エコーサーバはlocalhostでport:1337で待ち受けて、クライアントからPOSTでリクエストがきたら処理するようにしています
HTTPエコーサーバ
https://github.com/kcpjunky/node_http/blob/master/http_server_echo.js

クライアントは、待ち受けているエコーサーバに対して1337ポートでアクセスして、
メッセージをPOSTメソッドで送るようにしています
HTTPクライアント
https://github.com/kcpjunky/node_http/blob/master/httpClient.js

エコーサーバを立ち上げ忘れた状態で、HTTPクライアントを起動したときに、以下のエラーがでました。

throw er; // Unhandled 'error' event,
Error: connect ECONNREFUSED
at errnoException (net.js:884:11)
at Object.afterConnect [as oncomplete] (net.js:875:19)error' event




エラーイベントがハンドリングされていない
ということで、はじめはhttpServerとhttpClientの扱うイベントについてりかいしていなくて、エラーの意味がわからなかったです。
サーバーが立ち上がっていないから、クライアントがリクエストしてもエラーがかえってくるよなという当たり前のことに気付き、そういえばhttpClient.jsで、エラーの場合の処理を書いていなかったのが原因だったことがわかりました。

以下が対処法です
https://gist.github.com/kcpjunky/7963541

githubいろいろつかいはじめたので、コードはgithubの方にまとめようかと思います。

ちなみにこの Unhandling 'error' event というエラーに関しては以下で詳しく書かれてます
http://stackoverflow.com/questions/4328540/how-to-catch-http-client-request-exceptions-in-node-js