Итак, я только что создал простое приложение для чата с 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);