2012-10-02 46 views
5

我试图运行与表达一个应用的NodeJS和socket.io socket.io在Heroku和它comess了这个错误用的NodeJS Heroku上

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", 

回答

2

检查此链接:using socket.io with node.js on heroku

[更新1]

检查这个answer,我认为这可以帮助您解决您的问题。

[UPDATE 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('...', ...) 
+0

是的,但这是以听后 – Kikaimaru

+0

您是否尝试过与不同的端口号? – fableal

+0

我以为我只能使用process.env.PORT(多数民众赞成Heroku指派给我的端口),没有,我会得到不同的错误,我使用一些随机端口 – Kikaimaru

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); 
}); 

我认识到,不应该做任何不同,但我只是好奇。

0

也许你刚开始在同一端口上2个服务器 - 您app(Express服务器),这一个server = http.createServer(app).listen(app.get('port'))

尝试写这个

server = http.createServer(app).listen(/*port not from app*/)