Javascript 如何让套接字只发送到请求的客户端?

Javascript 如何让套接字只发送到请求的客户端?,javascript,reactjs,sockets,socket.io,Javascript,Reactjs,Sockets,Socket.io,我在练习socket.io时遇到问题。我设置了一个函数,在连接时,用户数据被刷新,只是它似乎只发生在初始连接之后 当一个用户连接时,新用户上的任何内容都不会刷新。传统的新用户连接,旧连接刷新,但新连接保持不变 连接过程中我是否无法发送数据 这对我来说只是一些简单的练习,试图通过websockets变得更好,但似乎无法通过general broadcast.emit 当然,我已经尝试了socket.to(socket.id).broadcast.emit,但是也没有成功。您将在我的代码中看到 /

我在练习socket.io时遇到问题。我设置了一个函数,在连接时,用户数据被刷新,只是它似乎只发生在初始连接之后

当一个用户连接时,新用户上的任何内容都不会刷新。传统的新用户连接,旧连接刷新,但新连接保持不变

连接过程中我是否无法发送数据

这对我来说只是一些简单的练习,试图通过websockets变得更好,但似乎无法通过general broadcast.emit

当然,我已经尝试了socket.to(socket.id).broadcast.emit,但是也没有成功。您将在我的代码中看到


// Setup socket.io
socketIo.on('connection', socket => {


        getDataByUser(user, socket)



    socket.on('disconnect', function() {
      delete CLIENTS[socket.id];
      console.log(`${username} disconnected`)
    });




function getDataByUser(user, socket) {



    var items = [1,2,3];
    items.forEach(element => {      
    socket.broadcast.emit('server:data', element)
      socket.broadcast.to(socket.id).emit('data', 'for your eyes only');
    });
}

正如您在getData函数中所看到的,为了测试它,我使用了通用的emit和emit to。我已经设置了适当的侦听器,但是套接字本身仅在新连接上刷新。也许只有在套接字a建立新连接时才调用它


我想让这个函数称为imediately apon socket connection。仅适用于已连接的用户。任何帮助都将不胜感激。

我认为您可以处理这一问题的方法是不要播放它。 尝试仅向当时已连接的套接字发射。 我没有得到你想要实现的,所以如果下面的代码不能解决你的问题,请说你希望得到什么样的输出

socketIo.on('connection', socket => {


     var items = [1,2,3];
    items.forEach(element => {      
    socket.emit('server:data', element)
    socket.emit('data', 'for your eyes only');
    });



socket.on('disconnect', function() {
  socket.disconnect();
  console.log(`${username} disconnected`)
});
当您使用套接字对象时,您只向建立连接的客户机发送地址