首页 > 解决方案 > Heroku 上的 Socket.io + Webapp 不同的容器 Docker ( 404 Not Found )

问题描述

我将我的项目部署在 Heroku 的 docker 容器中。

web.1:连接到 socket.io 的静态文件

server.1: socket.io 连接到 mongo atlas

服务器.js

const io = require('socket.io')(server, {
    cors: {
        origin: '*',
    },
    transports: ["xhr-polling"]
});

...

server.listen(process.env.PORT || 3000, () => {
    console.log(`listening on *:${process.env.PORT}`);
});

客户端.js

var socket = io.connect();

我无法连接。我在 Stackoverflow 中搜索,我了解 Heroku 定义了要连接的端口,但我有两个容器在同一个域中运行。一个在端口 80(静态网站)中,另一个在 Heroku(socket.io 服务器)生成的随机端口中。

帮助?

标签: dockerherokusocket.ioport

解决方案


这在 Heroku 中是不可能的:每个 Web 应用程序只能部署一个 Dyno,因此只能使用一个端口(由 Heroku 动态分配的端口)。
此外,您不能硬编码端口号(即 80)。

在您的情况下,您可以在 GitHub 上创建 2 个 Dynos 或托管网站(如果它是静态的)。


推荐阅读