Socket.io не будет работать, если не работает локально - PullRequest
0 голосов
/ 28 июня 2019

У меня есть игра, созданная с помощью 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"), и все еще ничего не работает

1 Ответ

1 голос
/ 28 июня 2019

Хорошо, я получил его, изменив const socket = socketIOClient("http://localhost:4001/NAMEPSACE")

до

const socket = socketIOClient('/NAMESPACE)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...