У меня есть игра, созданная с помощью React & Node, где она использует почти исключительно сокеты для обработки событий. Теперь все работает именно так, как мне нужно, когда я запускаю его локально, но как только я его размещаю, у меня ничего не происходит, и я действительно могу использовать руку. Я искал ответ повсюду безуспешно. Думаю, я знаю, где проблема, но не знаю, как ее исправить.
SERVER
const express = require("express");
const app = express();
const server = require("http").Server(app);
var io = require("socket.io")(server);
const path = require("path");
const sockets = require("./sockets_controller");
app.use(express.static(`${__dirname}/../build`));
io.of("/create").on("connection", socket => {
socket.on("create game", user => sockets.createGame(user, socket));
});
...More namepaces and event listeners...
server.listen(4001, () => console.log(`server running on port 4001`));
app.get("*", (req, res) => {
res.sendFile(path.join(__dirname, "../build/index.html"));
});
Опять же, отлично работает на локальном хосте: но вот как я подключаюсь на переднем конце
С каждым из моих компонентов связано пространство имен, поэтому в каждом компоненте, использующем сокеты, у меня есть
import socketIOClient from "socket.io-client";
const socket = socketIOClient("http://localhost:4001/NAMEPSACE");
Здесь я увидел, что я должен попытаться просто использовать socketIOClient (), который работает в SORTA, но я теряю свое пространство имен, и все, что я излучаю, остается незаметным при прослушивании сокетов на сервере.
Я получаю следующую ошибку при загрузке размещенной версии
The origin 'http://www.mywebsite.com' did not find 'http://www.mywebsite.com' in the Access-Control-Allow-Origin response header for cross-origin resource at MY_IP
Я должен представить, что мне нужно изменить localhost на что-то, но я просто не могу быть уверен.
РЕДАКТИРОВАТЬ: Я также попытался socketIOClient ("http://IP:4001/NAMEPSACE") и просто socketIOClient (" http://IP/NAMEPSACE"), и все еще ничего не работает