Socket.io 未显示套接字 ID 但已连接

问题描述 投票:0回答:0

我的 socketIO 已连接并在安装组件时发出初始事件,我将用户名和 socket.id 保存在服务器内存中。 此外,当我 console.log 套接字时,它会记录到控制台并向我显示对象中的套接字 ID 但是在发出初始事件期间,socket.id 是未定义的。因此,整个实时功能不起作用,因为我无法将事件发送给特定用户。

  useEffect(() => {
    const socketIO = io("http://localhost:5000");
    setSocket(socketIO);
    socketIO?.emit("newUser", {
      username: profileData?.username,
      socketId: socketIO.id, // gives undefined
    });
    console.log(socketIO);
    console.log(socketIO.id); // gives undefined
  }, [profileData]);

console.log(socketIO) 给出这个:

Socket {connected: false, recovered: false, receiveBuffer: Array(0), sendBuffer: Array(1), _queue: Array(0), …}
acks
: 
{}
connected
: 
true
flags
: 
{}
id
: 
"U1q1lkAb2OXG9_daAAAL"
ids
: 
0
io
: 
Manager {nsps: {…}, subs: Array(5), opts: {…}, setTimeoutFn: ƒ, clearTimeoutFn: ƒ, …}
nsp
: 
"/"
receiveBuffer
: 
[]
recovered
: 
undefined
sendBuffer
: 
[]
subs
: 
(4) [ƒ, ƒ, ƒ, ƒ]
_callbacks
: 
{}
_opts
: 
{path: '/socket.io', hostname: 'localhost', secure: false, port: '5000'}
_pid
: 
undefined
_queue
: 
[]
_queueSeq
: 
0
active
: 
(...)
disconnected
: 
(...)
volatile
: 
(...)
[[Prototype]]
: 
Emitter

所以我可以看到 id 但当我尝试这样做时它会记录为未定义。

实际问题是什么?

另外, 我正在将套接字导出到其他组件。 当我使用 socket.emit 或 socket.on 时,它会提示我“socket.on 不是函数”

为什么会这样。

reactjs sockets socket.io real-time
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.