Node 服务器实例

SSE 要求服务器与浏览器保持连接。对于不同的服务器软件来说,所消耗的资源是不一样的。Apache 服务器,每个连接就是一个线程,如果要维持大量连接,势必要消耗大量资源。Node 则是所有连接都使用同一个线程,因此消耗的资源会小得多,但是这要求每个连接不能包含很耗时的操作,比如磁盘的 IO 读写。

下面是 Node 的 SSE 服务器实例

  1. var http = require("http");
  2. http.createServer(function (req, res) {
  3. var fileName = "." + req.url;
  4. if (fileName === "./stream") {
  5. res.writeHead(200, {
  6. "Content-Type":"text/event-stream",
  7. "Cache-Control":"no-cache",
  8. "Connection":"keep-alive",
  9. "Access-Control-Allow-Origin": '*',
  10. });
  11. res.write("retry: 10000\n");
  12. res.write("event: connecttime\n");
  13. res.write("data: " + (new Date()) + "\n\n");
  14. res.write("data: " + (new Date()) + "\n\n");
  15. interval = setInterval(function () {
  16. res.write("data: " + (new Date()) + "\n\n");
  17. }, 1000);
  18. req.connection.addListener("close", function () {
  19. clearInterval(interval);
  20. }, false);
  21. }
  22. }).listen(8844, "127.0.0.1");