hakobera's blog

技術メモ。たまに雑談

tail.io - 標準入力をブラウザで tail -f できる htmlcat のクローンを Node.js + Socket.IO で作った

標準入力をブラウザで tail -f できる htmlcat というのを書いた - NaN days - subtech

この記事をみて便利そうだったのですが、Perl 詳しくなくて動かし方がよくわからなかったので、勉強がてらに Node.js + Socket.IO でクローンを作ってみました。npm モジュールとして登録してあるので、以下の方法でインストールできます。

$ npm install tail.io -g

コマンドラインツールなのでグローバルインストールしてください。これで tailio というコマンドが使えるようになります。

(追記) Socket.IO のデバッグログを標準で出力しないようにしました。また、--port オプションでポート番号を明示的に指定することもできるようにしてみました。既にインストールした人は npm update tail.io -g でアップデートしてみてください。--verbose オプションでデバッグログを出力することもできます。

本家と同じく --exec オプションに対応しているので、Mac で以下のコマンドを実行すると、サーバ起動と同時にブラウザが立ち上がり、そこのログを tail した結果が出力されます。

$ tail -f access.log | tailio --exec open
   info  - socket.io started
Server listening on port 10631
open http://0.0.0.0:10631

カラーコード周りはなんか上手く動いていませんが、用途としては間に合っているので気が向いたら直します。

参考記事

空きポートを探す emptyPort の実装は sugyan さんの記事 を参考に、標準入力 (ReadableStream) から1行ずつ読み込む LineReader の実装は koichik さんの記事を参考にさせてもらいました。