【问题标题】:How to deploy chat server on heroku如何在heroku上部署聊天服务器
【发布时间】:2018-11-03 08:24:13
【问题描述】:

所以我刚刚使用 React、NodeJS、Express.JS 和 SocketIO 创建了简单的聊天应用程序。我将在 Heroku 上部署它。

问题是我不确定我能否在同一个 URL 上同时运行前端和后端。当我第一次在本地创建这个聊天时,我在 localhost:3000 上运行前端(由 Create-React-App 默认)和在 localhost:8000 上运行后端。

对于前端,我在外部 API.js 文件中是这样做的:

import io from 'socket.io-client';

let socket;

export const api = {
  open: () => {
    socket = io('http://localhost:8000');
  }
}

对于后端,我是这样做的:

let express = require('express');
let io = require('socket.io')(8000);

所以,你看,它们都在不同的端口上。在我的电脑上,它运行良好。我不确定它们是否可以在同一个端口上本地工作(如果我试图将后端的 8000 端口切换到端口 3000,不幸的是它不能正常工作 - 前端和后端不能在同一个端口上工作,发生 HTTP 404 错误)。

我的问题是:有什么理由/甚至可以将它放在同一个端口上吗?因为这是第 2 个问题:

我尝试将它部署在 heroku 上,对于前端,我使用 Heroku Buildpack 进行 create-react-app 并且工作正常,但完全不知道如何使用它来部署服务器-边。我应该为后端创建单独的heroku地址吗?并且,在上面的代码中,更改路径,例如:

let socket;

export const api = {
  open: () => {
    socket = io('http://myherokuaddress');
  }
}

let express = require('express');
let io = require('socket.io')(http://myherokuaddress);

?

【问题讨论】:

    标签: reactjs express heroku deployment socket.io


    【解决方案1】:

    在heroku 中你不能手动定义端口。使用此代码而不是端口 8000。

    process.env.PORT
    

    【讨论】:

      【解决方案2】:

      您可以按照 Zenith 所说的去做,但是,最佳做法是为前端和后端代码使用不同的服务器,这样您就可以构建使用相同后端代码的模式前端应用程序。而且,如果由于某种原因,您的前端服务器已关闭,您只需将前端代码托管在其他任何地方,并且仍然使用相同的后端。

      【讨论】:

      • 所以它就像我在帖子底部所说的那样工作,不是吗?我可以在一个文件夹项目中一次性部署(前端和后端)吗?
      • 我认为你可以,但是,你不能在 heroku 上使用你想要的端口,这就是你的代码不起作用的原因。您必须使用 process.env.PORT,因为这是 heroku 允许您使用的端口
      猜你喜欢
      • 1970-01-01
      • 2022-01-07
      • 2019-11-10
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      • 2017-06-07
      • 2018-04-18
      • 2016-08-30
      相关资源
      最近更新 更多