2012-11-14 52 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