在heroku上与socket.io的Nodejs

我想在expressku上运行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", 

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

[ 更新1 ]

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

[ 更新2 ]

链接到有工作代码的问题 (不pipe客户的错误,问题本身的动机)。

 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('...', ...) 

当你:

 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个服务器 – 你的app (快速服务器)和这个server = http.createServer(app).listen(app.get('port'))

试着写这个

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