2012-11-14 44 views
0

我尝试创建一个Azure的WorkerRole用Node.js的这项工作没有任何问题。如果我添加了socket.io,如果我在模拟器中运行,Node.js服务器不会启动。如果我用我的应用程序JavaScript文件启动node.exe,它可以工作。socket.io不Azure的模拟器中运行

首先我想,我不要复制socket.io模块这样模拟器的Node.js内无法加载socket.io模块。但是我复制所有,并且显示的错误信息不是一个,如果一个模块丢失。

在控制台上的错误信息是这样的:

...\node_modules\socket.io\lib\Manager.js:104 
Server.on<'error', function(err) { 
TypeError: Object 12345 has no method 'on' 

我的Node.js代码:

var port = process.env.port || 12345; 
var io = require('socket.io').listen(port); 
// start socket 
io.sockets.on('connection', function (socket) { 
    socket.emit('news', { hello: 'world' }); 

    // create new push session 
    socket.on('cid', function (cid) { 
     console.log(cid); 
    }); 
}); 
console.log("Server running at port %d", port); 

回答

2

使用var port = parseInt(process.env.port) || 12345。据the code,到listen第一个参数,如果它的类型是number,但你从环境中得到的是string只当作一个端口。

+0

就是这样。谢谢! –

+0

非常感谢,该作品! – bernard