【问题标题】:Get a list of users in a socket.io chat获取 socket.io 聊天中的用户列表
【发布时间】:2020-10-12 00:56:38
【问题描述】:

我目前正在开发基于 socket.io 的聊天应用程序。

我找到了很多关于如何管理消息的教程,但我对用户列表感到困惑。

我想显示一个已连接用户的列表,有一些变化:

  • 当用户加入聊天时,他必须选择一个名字
  • 一旦他选择了一个名字,他就可以说话,并看到一个包含其他用户名字的列表

我在最后一部分苦苦挣扎:对于消息,这很容易,我可以获取数据库中的现有消息。但是如何检索和显示已连接用户的列表?

我在我的 react 应用程序中尝试了以下片段:

  const [players, setPlayers] = useState([])
  const [step, setStep] = useState('lobby')
  const socket = socketIOClient(ENDPOINT);

  useEffect(() => {

    socket.emit('data', {
      type: 'joinedRoom',
    })

    socket.on("FromAPI", data => {
      if (data.type === 'newPlayer') {

        setPlayers([{
          name: data.payload.name,
        }])
      }
      if (data.type === 'joinedRoom') {
        socket.emit('data', {
          type: 'getPlayers',
          players,
        })
      }

      if (data.type === 'getPlayers') {
        if (data.players && data.players.length) {
          setPlayers([...players, data.players])
        }
      }

    });

但这不起作用:对于任何新用户,players 状态片段被初始化为一个空数组。

一般来说,我对 websockets 还很陌生,任何有关如何处理数据共享的帮助将不胜感激 :)

【问题讨论】:

    标签: reactjs socket.io


    【解决方案1】:

    您是否在后端使用 nodejs断开连接时

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-18
      • 2017-03-25
      • 1970-01-01
      • 2015-07-20
      • 2014-02-10
      • 2013-05-12
      • 1970-01-01
      相关资源
      最近更新 更多