【问题标题】:Socket.io will not work unless being run locally除非在本地运行,否则 Socket.io 将无法工作
【发布时间】:2019-11-09 23:56:36
【问题描述】:

我有一个使用 React 和 Node 制作的游戏,它几乎只使用套接字来处理事件。现在,当我在本地运行它时,一切都完全按照我的需要运行,但是一旦我托管它,我什么都没有发生,我真的可以用一只手。我到处寻找答案,但没有运气。我想我可能知道问题出在哪里,只是不知道如何解决。

服务器

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"));
});

再次,在 localhost 上完美运行:但这是我在前端连接的方式

我的每个组件都有一个与之关联的命名空间,所以在每个使用套接字的组件中我都有

import socketIOClient from "socket.io-client";
const socket = socketIOClient("http://localhost:4001/NAMEPSACE");

我在这里看到我应该尝试只使用 SORTA 工作的 socketIOClient(),但是我丢失了我的命名空间,并且我发出的任何内容都不会被服务器上侦听的套接字所听到。

加载托管版本时出现以下错误

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") 仍然没有任何工作

【问题讨论】:

  • 您的客户端代码不能引用http://localhost:4001/NAMESPACE,因为这会告诉您的浏览器查看您自己的计算机,而不是托管后端代码的服务器。您需要找出远程主机的 IP 地址,然后确保您的前端组件在尝试连接时使用该 IP 地址。
  • 我已经这样做了,同样的错误编辑:当我将其更改为 IP 时,我没有指定端口。我想我试试'ip:4001/namespace'
  • 好的,我明白了。我能够通过 socketIOClient = ('/namepace) 让它工作,现在就像一个魅力

标签: node.js reactjs sockets socket.io


【解决方案1】:

好的,所以我通过更改让它工作 const socket = socketIOClient("http://localhost:4001/NAMEPSACE")

const socket = socketIOClient('/NAMESPACE)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 2021-06-04
    相关资源
    最近更新 更多