Node.js socket.io问题。Can';我不明白为什么它不发送数据

Node.js socket.io问题。Can';我不明白为什么它不发送数据,node.js,reactjs,express,socket.io,Node.js,Reactjs,Express,Socket.io,我认为我的配置中有一些设置不正确。它只在我重新启动服务器时发送数据,有时并不总是发送数据。我的堆栈是node.js,带有express和react。这是我的app.js文件 const server = require('http').createServer(app); const options = { cors: true, origins: ['http://127.0.0.1:3000'], 'force new connection': true, }; const io

我认为我的配置中有一些设置不正确。它只在我重新启动服务器时发送数据,有时并不总是发送数据。我的堆栈是node.js,带有express和react。这是我的app.js文件

const server = require('http').createServer(app);
const options = {
  cors: true,
  origins: ['http://127.0.0.1:3000'],
  'force new connection': true,
};
const io = require('socket.io')(server, options);


io.on('connection', (socket) => {
  console.log('connecting..', socket.id);

  socket.on('chat', (chat) => {
    console.log(chat);
    if (chat) {
      io.sockets.emit('chat', chat);
    }
  });

  socket.on('remove', (socket) => {
    console.log('user disconnected!');
  });
});

server.listen(port, () => {
  console.log('listening on port ' + port);
  db.sync({
    // force: true,
    logging: false,
  });
});
客户端在app.js中,我将套接字和io设置为如下

import { io } from 'socket.io-client';
const ENDPOINT = 'http://localhost:4000';
var socket = io(ENDPOINT, { forceNew: true });
并将其传递给我的组件

 <Chatroom
            user={user}
            getAllMessages={getAllMessages}
            setGetAllMessages={setGetAllMessages}
            socket={socket}
            io={io}
          />

您只发送了一个socket.emit('chat',personalMessage)。您希望它如何多次发送数据?你在期待什么?我想我的问题是。如何让socket.emit在每次用户发送聊天信息时触发您应该在组件中创建
单击
/
输入
事件处理程序,然后从那里而不是
使用效果

const Chatroom = ({ user, getAllMessages, setGetAllMessages, socket, io }) => {
  const [getMessages, setGetMessages] = useState();
  const [userMessage, setUserMessage] = useState('');
  const [getAllUsers, setGetAllUsers] = useState();
  const [flag, setFlag] = useState(false);
  const [personalMessage, setMessage] = useState();
  const [getSocket, setSocket] = useState(socket);

  useEffect(() => {
    socket.on('connect', () => {
      console.log('connected.');
    });

    socket.emit('chat', personalMessage);

    return () => {
      socket.emit('remove', () => {
        socket.disconnect();
      });
    };
  }, [socket, getSocket]);