我正在尝试在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",
答案 0 :(得分:2)
点击此链接:using socket.io with node.js on heroku。
[更新1 ]
选中此answer,我认为这可以帮助您解决问题。
[更新2 ]
具有工作代码的link to a question(无论客户的错误,问题本身的动机)。
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('...', ...)
答案 1 :(得分: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);
});
我意识到不应该做任何不同的事情,但我只是好奇。
答案 2 :(得分:0)
可能你只是在同一个端口上启动2台服务器 - 你的app
(快速服务器)和这个server = http.createServer(app).listen(app.get('port'))
尝试写这个
server = http.createServer(app).listen(/*port not from app*/)