如何在heroku上部署聊天服务器

时间:2018-11-03 08:24:13

标签: reactjs express heroku deployment socket.io

因此,我刚刚使用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);

2 个答案:

答案 0 :(得分:0)

在heroku中,您无法手动定义端口。使用此代码代替端口8000。

process.env.PORT

答案 1 :(得分:0)

您可以执行Zenith所说的,但是,最佳实践是对前端和后端代码使用不同的服务器,这样您就可以构建使用相同后端代码的模式前端应用程序。而且,如果由于某种原因您的前端服务器已关闭,则只需要在其他位置托管前端代码,并且仍使用相同的后端即可。

相关问题