Я работаю над настройкой внутреннего узла Node для подачи данных и связи с ReactJS для моего внешнего интерфейса. В конечном итоге я разрабатываю новое программное обеспечение компании для замены нашей нынешней Транспортной системы.
Я использую Amazon EC2 Ubuntu 16.04 - по своим собственным причинам для своего бизнеса - и я просто не могу заставить свой интерфейс ReactJS с Socket.IO общаться смой сервер nodeJS с Socket.IO на http://localhost:4000/.
Это мой App.js в моем интерфейсе реагирования, когда он вызывает
import React, { Component } from 'react';
import logo from './logo.svg';
import ioClient from 'socket.io-client';
import './App.css';
var socket;
class App extends Component {
constructor() {
super();
this.state = {
endpoint: 'http://localhost:4000/'
};
socket = ioClient(this.state.endpoint);
}
Это мой индекс nodeJS для серверной части
const mysql = require('mysql');
const http = require('http');
const express = require('express');
const cors = require('cors');
const app = express();
const server = http.createServer(app);
const io = require('socket.io').listen(server);
app.use(cors());
app.get('/', (req, res) => {
res.send('Server running on port 4000')
});
const sqlCon = mysql.createConnection({
host: 'localhost',
user: 'admin-user',
password: 'admin-pass',
database: 'sample'
});
sqlCon.connect( (err) => {
if (err) throw err;
console.log('Connected!');
});
io.on('connection', (socket) => {
console.log('user connected');
});
server.listen(4000, "localhost", () => {
console.log('Node Server Running on 4000')
});
Я могу заставить его общаться через мой фактический публичный IP-адрес, но не через localhost. Я действительно не хочу показывать свой бэкенд на своем общедоступном IP-адресе для связи с ним для всех пользователей. Вероятно, об этом уже спрашивали, но я, честно говоря, нигде не могу найти четкого ответа, и вот уже 3 дня ищуУ Node нет проблем с выполнением, и, как я уже сказал, если я создаю соединение socket.io с общедоступного IP-адреса, я могу заставить его взаимодействовать, и, насколько я могу судить, у узла нет проблем с запуском остальной части скрипта, когда он подключается кmariaDB без проблем.
Это ошибка, которую я продолжаю получать в своей консоли Chrome.
polling-xhr.js:271 GET http://localhost:4000/socket.io/?EIO=3&transport=polling&t=MvBS0bE net::ERR_CONNECTION_REFUSED
polling-xhr.js:271 GET http://localhost:4000/socket.io/?EIO=3&transport=polling&t=MvBS3H8 net::ERR_CONNECTION_REFUSED
В настоящее время я запускаю React через npm start, поэтому мой localhost: 3000обратный прокси к nginx, чтобы мой интерфейс React был виден на моем общедоступном IP-адресе EC2 через порт 80.
Любая помощь приветствуется!