【发布时间】:2021-12-12 01:51:18
【问题描述】:
大家!
我正在尝试部署我的应用程序,它使用 React 和 NodeJs。问题是,我正在使用 Socket.io 进行一些数据处理,它工作正常,但我不明白如何使它与 Nginx 一起工作。
我正在编辑 Nhinx 文件:
sudo nano /etc/nginx/sites-available/react
这是代码:
server {
server_name {my ip};
root /root/my-app/build;
index index.html index.htm;
location / {
try_files $uri /index.html =404;
}
location /socketio {
proxy_pass http://localhost:9000;
include proxy_params;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
}
客户端中的代码:
import { io } from "socket.io-client";
let socket = io('http://159.223.113.224',{
path: '/socketio',
});
export default socket;
服务器中的代码:
"use strict";
exports.__esModule = true;
var express = require("express");
var http = require('http');
var appSocket = express();
var server = http.createServer(appSocket);
var io = require("socket.io")(server, {
path: "/socketio",
cors: {
origin: "*",
methods: ["GET", "POST"],
allowedHeaders: ["my-custom-header"],
credentials: true
}
});
var rooms = require("./game/socketLogic/rooms")(io);
var gameLogic = require("./game/socketLogic/gameLogic")(io);
var teamChat = require("./game/socketLogic/teamChat")(io);
var timer = require("./game/socketLogic/timer")(io);
var lobbyChat = require("./game/socketLogic/lobbyChat")(io);
require("reflect-metadata");
var cors = require("cors");
const { type } = require("os");
appSocket.use(express.json());
appSocket.use(express.urlencoded({ extended: false }));
appSocket.use(cors());
server.listen(9000, function () {
console.log('Server listening at port 9000.');
});
我不知道我是否忘记了什么。我也有使用 pm2 运行的上一个文件。当我进入页面时,出现下一个错误:
GET http://localhost:9000/socket.io/?EIO=4&transport=polling&t=NozbkRz 网络::ERR_CONNECTION_REFUSED
【问题讨论】:
标签: javascript node.js reactjs nginx socket.io