node.js - 客户端和服务器端之间的 Socket.io 连接失败(Reacr/Node.js)

标签 node.js reactjs socket.io

我正在尝试获得基本的套接字连接。

服务器看起来像这样:

    const express = require("express");
    const app = express();
    const port = 4000;
    const server = require("http").createServer(app);
    let io = require("socket.io")(server);

    app.get("/", (req, res) => res.send("Server up"));

    io.on("connection", socket => {
      console.log("a user connected");
    });

    app.get("/", (req, res) => res.send("Hello World!"));

    app.listen(port, () => console.log(`Example app listening on port ${port}!`));

React 组件如下所示:

    import React, { useState, useEffect } from "react";
    import io from "socket.io-client";

    const ChatScreen = () => {

      const socket = io('localhost:4000');


      useEffect(() => {
      }, []);

      return (
        <div className="chatScreen">HI</div>
      );
    };

    export default ChatScreen;

正如我从阅读中得到的,我应该在服务器中收到一个 console.log“用户已连接”。 但我收到这两个错误:

Access to XMLHttpRequest at 'http://localhost:4000/socket.io/?EIO=3&transport=polling&t=N2xxl7i' 
from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-
Origin' header is present on the requested resource.

还有

polling-xhr.js:267 GET http://localhost:4000/socket.io/?EIO=3&transport=polling&t=N2xy65_ 
net::ERR_FAILED

我该怎么做?

最佳答案

在您的 Node js 应用程序中,您可以尝试在 var app =express(); 之后添加以下内容:

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "X-Requested-With");
  res.header("Access-Control-Allow-Headers", "Content-Type");
  res.header("Access-Control-Allow-Methods", "PUT, GET, POST, DELETE, OPTIONS");
  next();
});

关于node.js - 客户端和服务器端之间的 Socket.io 连接失败(Reacr/Node.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60592030/

相关文章:

javascript - 拆分后数组中存在制表符

javascript - TypeScript:要求两个数组的长度相同?

reactjs - 无法更改 react-elastic-carousel 中的点样式

node.js - 我如何仅向目标用户发送?

angularjs - 在 angularjs 中的每个 View 加载上创建与 socket.io 的新连接

javascript - 回调函数示例

javascript - 如何使用 node.js 连接到 mongodb(并进行身份验证)?

node.js - 有没有一种方法可以在一行中替换 HTML 文件中的多个出现位置?

node.js - 重构 Express 中的类似路由,提取回调以分离模块

javascript - React-Native-Canvas 未绘制整个矩形