Heroku聊天应用程序工作,但如何集成它?

时间:2014-04-25 22:00:55

标签: node.js heroku github express socket.io

所以我有一个有效的聊天应用程序,基于Socket.IO自己的例子:https://github.com/LearnBoost/socket.io/tree/master/examples/chat

现在我遇到的第一个问题就是修改它,以便与我的网站使用的Express 4.0和Jade一起使用。这不是太具有挑战性,使用Express 4.0的更新代码位于:https://github.com/coolbnjmn/heroku-socket.io

您可以在http://salty-escarpment-7398.herokuapp.com/chat看到它的实际效果 考虑到这一点,我然后尝试将此聊天与我当前的网站一起使用,这就是我遇到麻烦的地方。我必须做出的让它在本地工作的变化如下:

首先,我必须更改行(在index.js中):

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

 var port = 3000;

因为我遇到了EADDRINUSE错误。我没有在节点应用程序中运行其他服务器,但它仍然给我这个。这是我不知道如何解决的第一个问题,因为要让我的网站再次使用heroku(它也使用heroku,就像我的示例应用程序)将需要使用process.env.PORT而不是静态分配的端口号。

其次,我必须更改该行(在public / main.js中):

 var socket = io.connect();

 var socket = io.connect('http://localhost:3000');

因为我说错误

 "http://localhost:5000/socket.io/1/?t=1398462814085 404 (Not Found) " error. 

第三个也是最后一个:我必须更改一行(在views / chat.jade中):

 script(src='/socket.io/socket.io.js')

 script(src='http://localhost:3000/socket.io/socket.io.js')

因为我说错误

 Uncaught ReferenceError: require is not defined 
 Uncaught ReferenceError: io is not defined 

现在通过这些更改,应用程序在本地工作正常,

 "http://localhost:3000". 

但是我试图让它重新回到Heroku的Cedar堆栈上。我需要做什么才能在我的应用程序中使用原始的3行代码。这是依赖性问题吗?我做了一个npm修剪并重新安装了我认为我需要的东西,但也许我还有太多?我打开数据库连接,这可能与EADDRINUSE有关吗?

我很困惑,所以任何帮助都会受到赞赏。

感谢。

1 个答案:

答案 0 :(得分:0)

你已经硬编码了端口3000,但是Heroku指定了一个可变端口,因此你的更改将无法正常工作。