似乎服务器(节点)有一个类似线程的行为,因为它处理同步请求,但我们知道客户端的javascript不支持多线程。我只是问客户端(javascript)如何处理node.js,尤其是来自服务器的多个响应? 例如,我想同时渲染两个对象。
使用node.js制作快速分阶段实时游戏应用是否合适?
有没有办法或模式来处理这个?
答案 0 :(得分:2)
将节点视为指挥官,它可以无任何阻塞地处理任务监控。因此,如果您认为这样,节点不需要是多线程的,它可以在没有任何等待时间的情况下执行任务,因此无需创建新线程,因为没有任何阻塞。
你在评论中提到了套接字,想到这一点,Node有一个网络线程来监控数据的TCP / UDP连接,当它收到一个数据包时,它会告诉你的节点脚本你想要做什么使用此数据包,您立即告诉网络线程将此新数据包作为回复发送出去,然后网络线程会这样做,然后调用下一个事件。
看看下面的图片和段落,这应该解释
在node.js中,你不应该担心后端会发生什么:只在你做I / O时使用回调;并且保证您的代码永远不会中断,并且执行I / O不会阻止其他请求,而不必承担每个请求的线程/进程成本(例如Apache中的内存开销)。
拥有异步I / O是好的,因为I / O比大多数代码都要贵,我们应该做的不仅仅是等待I / O.
事件循环是“处理和处理外部事件并将其转换为回调调用的实体”。所以I / O调用是Node.js可以从一个请求切换到另一个请求的点。在I / O调用中,您的代码保存回调并将控制权返回给node.js运行时环境。当数据实际可用时,将在稍后调用回调。
来源:http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/
请务必阅读该文章,这是第一篇让我完全理解后端架构发生了什么的文章。