gpt4 book ai didi

javascript - 如何让我的node/socket.io应用程序在部署到heroku时使用正确的端口?

转载 作者:太空宇宙 更新时间:2023-11-04 00:55:23 24 4
gpt4 key购买 nike

我按照 socket.io 的在线聊天教程制作了一个聊天应用程序。在我的 app.js 文件(我使用了 Express 生成器)中,我有...

var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);

这意味着我需要浏览到(因此我的套接字服务器正在运行)...

http://localhost:3000

在我的页面上有以下几行...

  var socket = io.connect('http://localhost:3000');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});

当我在本地运行应用程序时,套接字应用程序可以工作。然而,为了部署它,我使用了heroku/node buildpack,当部署我的应用程序时,它在端口80上运行,例如在app.heroku.com上。我有两个问题...

1) 为什么我的应用程序在部署时位于不同的端口上? (这是在哪里发生的?)2) 如何将我的页面设置为始终查看正确的网址和端口?

最佳答案

var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);

这很好。请记住,这不会执行任何操作,它只是您的应用程序中任意设置的值。为了监听该端口,您必须稍后告诉服务器进行监听,例如 app.listen(app.get('port'))

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

这就是您想要更改的内容:

var socket = io.connect();

当您在 Heroku 上托管时,您不会连接到“localhost:3000”(而是连接到 yourapp.herokuapp.com:80 或 customdomain.com:80)。因此,通过指定 localhost:3000,您注定了 socket.io 无法找到自己的服务器。

关于javascript - 如何让我的node/socket.io应用程序在部署到heroku时使用正确的端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30117543/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com