我正在努力设置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地址而不是通过本地主机进行通信。我真的不想在公共IP地址上公开我的后端,以便与所有用户进行通信。可能以前有人问过这个问题,但是老实说,我在任何地方都找不到明确的答案,我已经找了3天了。节点执行没有问题,就像我说过的,如果我从公共IP创建socket.io连接,我可以使它进行通信,并且据我所知,节点在连接到脚本时运行其余脚本没有问题mariaDB没问题。