gpt4 book ai didi

javascript - NodeJS : client. emit ('message' ) 连接后需要延迟才能被看到

转载 作者:行者123 更新时间:2023-11-29 21:07:42 24 4
gpt4 key购买 nike

我在 Node 应用程序中使用 socket.io。这是我的代码片段:

io.sockets.on('connection', socket => {

setTimeout(function () {
console.log('a client connected!')
clients.forEach(s => s.emit('to_client', 'a client connected'))
}, 0)
})

如果我删除 setTimeout 包装器,则在客户端(Chrome 浏览器)的控制台中看不到 'a client connected',但是,即使超时零,它确实出现了。可能是什么问题?我宁愿不使用 setTimeout,因为它听起来不像这里应该需要的东西。

最佳答案

Node 是异步单线程运行时,因此它使用回调来避免阻塞 I/O。

使用 setTimeout是一种方式(连同 Node 内置 process.nextTick() 处理异步代码的方法!)。您的示例代码正在尝试访问 clients,我怀疑在您的连接回调执行之前没有初始化处理此问题的任何内容。

setTimeout方法基本上将代码(回调函数)推送到事件队列中,因此当前在调用堆栈上的任何内容都将在 可以运行此 setTimeout 回调之前得到处理。

关于javascript - NodeJS : client. emit ('message' ) 连接后需要延迟才能被看到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43258576/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com