node.websocketを試す。

HTML5の機能の一つWebSocketを試そうと思いました。その名の通りHTMLのスクリプト上でソケットを使う機能です。

こちらのページを大変参考にしました。ありがとうございます。
噂のnode.websocket.jsでサーバサイドJSとHTML5 WebSocketを体験してみたの巻 - ダウンロードたけし(寅年)の日記


基本的にはこの手引きのまま環境を整えていたのですが、いざWebSocketのサーバーを動かす件がうまくいきません。
READMEに従いportを指定しようとするとエラーが出てしまうのです。

$ node runserver.js --port='8888'
(evcom) bind() Permission denied
Error: Permission denied
    at new <anonymous> (/home/*/src/node.websocket.js/websocket.js:61:15)
    at Object.<anonymous> (/home/*/src/node.websocket.js/runserver.js:4:28)
    at Module._loadContent (node.js:942:21)
    at node.js:970:20
    at node.js:571:25
    at node.js:1031:9

nodeの仕様が変わったのか、node.websoketのオプションの解釈部分がうまく動いていないようです。
ざっくり修正ですがとりあえずtools.jsを以下のようにすると動きました。

diff --git a/tools.js b/tools.js
index 6c834ce..31d8d64 100644
--- a/tools.js
+++ b/tools.js
@@ -32,10 +32,10 @@ this.merge = function(obj, newobj){

 // reads argv, parses --option=value into {option: value}
 this.argvToObject = function(argv){
-  var obj = {}, regex = /\-\-(\w+)(\=(\\'.+\\'))?/;
+  var obj = {}, regex = /\-\-(\w+)=(.+)/;
   for (var i = 0, l = argv.length, match; i < l; i++){
     match = argv[i].match(regex);
-    if (match) obj[match[1]] = match[3] !== undefined ? eval(match[3]) : null;
+    if (match) obj[match[1]] = match[2] !== undefined ? match[2] : null;
   }
   return obj;
 };