HTML5の目玉機能の一つと言えるWebSocket。使ってみたいとは思いつつもHTTPサーバとは別でサーバを立てるとなると若干の面倒さを感じてしまうのではないでしょうか。 そこで使ってみたいのがwebsocketdです。inetdくらいのカジュアルさで使えるWebSocketサーバです。 例えばこんな感じでファイルをcount.shというファイルを作成します。

#!/bin/bash
for COUNT in $(seq 1 10); do
  echo $COUNT
  sleep 1
done

後はポートを指定して実行するだけです。

$ websocketd --port=8080 ./count.sh

これでWebSocketサーバが立ち上がります。実際に使うHTMLファイルは次のようになります。

< !DOCTYPE html>
<pre id="log"></pre>
<script>
  // helper function: log message to screen
  function log(msg) {
    document.getElementById('log').innerText += msg + '\n';
  }

  // setup websocket with callbacks
  var ws = new WebSocket('ws://localhost:8080/');
  ws.onopen = function() {
    log('CONNECT');
  };
  ws.onclose = function() {
    log('DISCONNECT');
  };
  ws.onmessage = function(event) {
    log('MESSAGE: ' + event.data);
  };
</script>

簡単ですよね。実際に実行するとこんな感じになります。

サーバ実行中。

Webブラウザからアクセスするとこんな感じです(Developer Toolsに出力しています)。

コンソール出力。

後はWebブラウザごとにユニークなキーを渡せばチャットルームを作ったり、リアルタイムコラボレーションも容易に実現できるのではないでしょうか。 DB接続したりすると面倒そうですが、ファイルベースでWebSocketを手軽に使ってみたいという目的にはぴったりだと思います。 websocketdはWindows/Mac OSX/Linux用、BSD Licenseのオープンソース・ソフトウェアです。 joewalnes/websocketd