0

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

首先我想,我没有复制 socket.io 模块,所以在 Emulator 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);
4

1 回答 1

2

使用var port = parseInt(process.env.port) || 12345. 根据代码,第一个参数 tolisten仅在其类型为时才被视为端口number,但您从环境中得到的是string.

于 2012-11-14T08:39:28.093 回答