【发布时间】:2011-05-20 15:29:15
【问题描述】:
我正在尝试创建一个服务器端解决方案,该解决方案通过 node.js 定期将数据推送到客户端(无客户端轮询)。连接应该是永久打开的,只要服务器有新数据,它就会将其推送到客户端。
这是我的简单示例脚本:
var sys = require('sys'),
http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/html'});
sys.puts('Start sending...');
setInterval(function(){
res.write("<script type='text/javascript'>document.write('test<br>')</script>");
}, 10000);
}).listen(8010);
这基本可以,但似乎一次只能连接一个客户端。
如果我用浏览器打开http://127.0.0.1:8010/,我会每 10 秒看到一次新的输出。但是当我打开另一个具有相同 url 的选项卡时,它只会永远加载。只有当我关闭第一个选项卡时,我才能从服务器获得内容。
我需要做什么才能为多个客户端提供服务?
【问题讨论】:
-
这很奇怪。根据此页面,它应该可以工作:blog.nemikor.com/2010/05/21/long-polling-in-nodejs
-
@thejh 嗯,即使我尝试使用 res.end() 返回一个简单的响应(没有彗星,只是简单的请求响应),在我看来,客户必须等待前一个为了从服务器获取内容。也许这是一些操作系统问题?我在 ubuntu vm-ware 上运行 node.js 0.3.2。
-
@Max:你确定版本吗?甚至 github 都说 0.3.1 是最新的...github.com/ry/node
-
@thejh 是的,0.3.2-pre,这就是 node -v 的输出
-
@Max:
netstat --tcp说什么?两个连接?两者都建立还是一个 syn_wait 左右?