Node.JS上的服务器发送事件

0xf*_*000 7 javascript node.js server-sent-events

我实际上正在尝试创建一个将使用Server-Sent Events草案的Web应用程序.根据我的知识,SSE每个连接使用一个线程,并且由于服务器将连续将数据泵送到客户端,即使一秒钟也没有闲置,我无法将线程放回池中.

因此,我正在尝试使用Node.JS(我还没有使用到日期)来处理与服务器的连接.我已经浏览了HTML5 Rocks对SSE的介绍,并且有一个代码示例将SSE与Node.JS集成在一起.

但是,我很困惑Node.JS是否会同时处理数千个客户端连接并比Apache服务器更有效地利用服务器?任何人都可以帮助我理解Node将如何在这里行动?

对不起,如果我听起来有点太模糊.我准备尽可能多的澄清!谢谢!

gen*_*nry 4

php:

do {
  sendMsg($startedAt , time());
  sleep(5);
} while(true);
Run Code Online (Sandbox Code Playgroud)

节点.js

setInterval(function() {
  constructSSE(res, id, (new Date()).toLocaleTimeString());
}, 5000);
Run Code Online (Sandbox Code Playgroud)

区别在于 sleep 会阻塞 php 线程 5 秒。在这 5 秒内,服务器需要有一个专用线程绝对不执行任何操作。每个用户一个线程。

在 Node.js 版本中,setInterval 不会阻塞线程。一个 Node.js 线程可以处理所有用户。