在 react 和 node 中设置 socket io

Posted

技术标签:

【中文标题】在 react 和 node 中设置 socket io【英文标题】:Setup socket io in react and node 【发布时间】:2021-04-29 00:40:50 【问题描述】:

尝试为我的反应和节点应用程序实现套接字。 有人可以告诉我,我做错了什么。 在 Node 中,我可以访问 io.on 的唯一方法是使用新的服务器(http)。 在 Client 中,socket 对象执行控制台日志,但连接的属性为 false。

--我没有连接到socket,什么也没有发生(“用户连接”不是console.log in node)

节点

require("./config/mysql");
require("dotenv").config();
const express = require("express");
const http = require("http");
const cors = require("cors");

const app = express();
const server = http.createServer(app);
// const io = require("socket.io")(server);

const  Server  = require("socket.io");
const io = new Server(http);

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

 socket.on("disconnect", () => 
console.log("user disconnected");
);
);

app.use(express.json());
app.use(cors());

const PORT = process.env.PORT || 5001;
server.listen(PORT, () => console.log(`Server running on port $PORT`));

反应

import React,  useState, useEffect  from "react";
import  useSelector  from "react-redux";
import TextField from "@material-ui/core/TextField";
import Button from "@material-ui/core/Button";
import "./Chat.css";
import ChatSingleMessage from "../../components/ChatSingleMessage/ChatSingleMessage";
import  io  from "socket.io-client";

const ENDPOINT = "http://localhost:5000/";
const socket = io(ENDPOINT);

const Chat = () => 


 useEffect(() => 
   socket.on("connect", () => 
   console.log("connect");
   );

     console.log(socket);


 , []);

    return ( JSX Stuff );
 ;
 export default Chat;

【问题讨论】:

你的错误是什么?您可以编辑并添加到您的问题中吗? 我没有连接到套接字,节点不 clg "user connected" 你为什么要评论 require socket io 这一行? 只是为了展示,我尝试了两种方法,它们都不起作用 【参考方案1】:

只需要改用 2.3.0 版本

【讨论】:

以上是关于在 react 和 node 中设置 socket io的主要内容,如果未能解决你的问题,请参考以下文章

在 React 组件中设置初始状态以进行渐进式增强和 Flux 架构

在 Webpack 和 React.js 中设置代码拆分

为啥我不能在 React 中设置这个状态?

你如何在 React 中设置文档标题?

VC++ socket编程中设置socket选项的ioctlsocketsetsockopt和WSAIoctl函数的使用(附源码)

无法使用钩子在 React 中设置状态