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; };