Как развернуть чат-сервер на героку - PullRequest
0 голосов
/ 03 ноября 2018

Итак, я только что создал простое приложение для чата с 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 для создания-реакции-приложения, и он отлично работает, но совершенно не знаю, как использовать его для развертывания сервера. боковая сторона. Должен ли я создать отдельный адрес герои для бэкэнда? И, в коде выше, измените пути как:

let socket;

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

и

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

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Вы можете сделать то, что сказал Zenith, однако, лучше всего использовать разные серверы для внешнего и внутреннего кода, таким образом вы можете создавать приложения внешнего интерфейса в режиме, использующие один и тот же внутренний код. И, если по какой-то причине ваш сервер веб-интерфейса не работает, вам нужно будет только разместить код веб-интерфейса в другом месте и по-прежнему использовать тот же бэкэнд.

0 голосов
/ 03 ноября 2018

В героку вы не можете определить порт вручную. используйте этот код вместо порта 8000.

process.env.PORT
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...