5

我正在尝试在 heroku 上使用 express 和 socket.io 运行 nodejs 应用程序,结果出现此错误

EACCESS,权限被拒绝

当我尝试运行以下代码时:

app.configure(function () {
   app.set('port', process.env.PORT || 3000);
});
var server = http.createServer(app).listen(app.get('port'))
io = require('socket.io').listen(server); // it crashes on this line
io.configure(function () {
    io.set("transports", ["xhr-polling"]);
    io.set("polling duration", 10);
    io.set("log level", 1);
});

甚至可以在heroku上做到这一点吗?

依赖项:

"socket.io": "*",
"express": "3.0.0rc4",
4

3 回答 3

2

检查此链接:在 heroku上使用 socket.io 和 node.js。

[更新 1 ]

检查这个答案,我认为它可以帮助您解决问题。

[更新 2 ]

具有工作代码的问题的链接(无论客户的错误,问题本身的动机)。

var port = process.env.PORT || 3000;

var app = require('express').createServer()
var io = require('socket.io').listen(app);

app.listen(port);

// Heroku setting for long polling
io.configure(function () { 
    io.set("transports", ["xhr-polling"]); 
    io.set("polling duration", 10); 
});

// To set handlers for data received, etc ... use io.sockets.on('...', ...)
于 2012-10-02T17:39:32.807 回答
0

当你:

io = require('socket.io');
app.configure(function () {
   app.set('port', process.env.PORT || 3000);
});
var server = http.createServer(app).listen(app.get('port'))
io.listen(server); // it crashes on this line
io.configure(function () {
    io.set("transports", ["xhr-polling"]);
    io.set("polling duration", 10);
    io.set("log level", 1);
});

我意识到不应该做任何不同的事情,但我只是好奇。

于 2012-10-02T18:59:54.073 回答
0

可能您只是在同一个端口上启动 2 台服务器 - 您的app(快速服务器)和这台server = http.createServer(app).listen(app.get('port'))

试着写这个

server = http.createServer(app).listen(/*port not from app*/)
于 2017-01-29T21:13:11.367 回答