node.jsのv0.7以降でsocket.ioのv0.9.5を動かす †node.jsのv0.7以降でsocket.ioのv0.9.5を動かそうとすると (モジュールはnpmから) RangeError: Maximum call stack size exceeded
以上のサイトを参考にsocket.io/lib/manager.jsを修正 - this.oldListeners = server.listeners('request'); - server.removeAllListeners('request'); + this.oldListeners = server.listeners('request').splice(0); これでnode.js(v0.7)でsocket.ioが動くようになる. socket.ioのchat exsample(exsample/chat/app.js)を動かす †https://github.com/learnboost/socket.io このサンプルにはnode.jsのフレームワークexpressが使われているが *nodeのモジュールのsocket.ioが止まってしまい、自動生成されHTML側で読み込まれるsocket.io/socket.io.jsが読み込まれない(404) *adressがないと言われるのもこの仕様変更による問題 ということが起きるのでexpress v3.0.0用に変更する - app.listen(3000, function () { - var addr = app.address(); - console.log(' app listening on http://' + addr.address + ':' + addr.port); - }); + var http = http.createServer(app).listen(3000); + var io = require('socket.io').listen(http) + , nicknames = {}; expressのappがhttpオブジェクトを返さなくなったため httpオブジェクトを作ってsocket.ioではそれをlistenするように変更する必要がある. node.jsをdebug実行してEclipseから確認する †参考 https://github.com/joyent/node/wiki/Using-Eclipse-as-Node-Applications-Debugger node --debug [script] node --debug-brk [script] nodeでは以上のコマンドでデバッグ実行を行うが EclipseのGoogle Chrome Developer Toolsを使うとEclipse上から確認できる. Eclipseで http://chromedevtools.googlecode.com/svn/update/dev/ からDeveloper Toolsをインストールする. Debug ConfigurationsのStandalone V8 VMを開きアドレス"5858"を設定する これでnodeを実行したときにEclipse上からnode.jsのデバッグを行うことができる |