gpt4 book ai didi

node.js - 写入 Node WebSocket 是阻塞还是非阻塞?

转载 作者:太空宇宙 更新时间:2023-11-03 22:01:01 30 4
gpt4 key购买 nike

当我向 WebSocket 客户端发送 msg 时,它是阻塞代码还是非阻塞代码?

ws.send(msg);

换句话说,将 send 封装在 setTimeout 中是一个好习惯吗?

我正在使用 Node Einaros WS 库,但我认为这个问题也适用于许多其他库,例如 Socket.Io 或 Engine.Io。

最佳答案

首先,将阻塞函数包装在 setTimeout 中只会延迟阻塞调用,对吗?所以你做与不做都没关系。 Node 的非阻塞性质来自于底层引擎运行一个事件系统,让您知道传统的阻塞调用(例如文件系统检索)何时完成。

Websockets 是一种“即发即忘”协议(protocol),我认为这正是您想要问的。服务器和客户端不等待响应,而是使用与我上面提到的相同的系统。当事件从另一端发出时,它们将“监听”事件,然后处理进程。值得注意的是,浏览器中的 websocket 通信仅在 TCP 协议(protocol)下进行,这意味着如果数据包丢失,它将再次向服务器请求它。这通常不是问题,但在毫秒很重要的实时游戏意义上,这通常并不理想。

关于node.js - 写入 Node WebSocket 是阻塞还是非阻塞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25216333/

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