2011-07-26 64 views
1

我是node.js的新手,拥有这个非常简单的代码。我只想每隔一秒向已连接到服务器的用户说一声Hi用户。 这里是我的代码:Node.js中的简单Hello World问题

var http = require('http'); 

function newfunc(request, response) { 
    response.writeHead(200, { 
    "Content-Type": "text/plain", 
    "connection" : "keep-alive" 
    }); 
    setInterval(function() { 
    response.write('Hi User\n'); 
    response.end(''); 
    }, 1000); 
} 
http.createServer(newfunc).listen(7070); 

我看到Hi User消息只有一次,好像setInterval正在写它只有一次。 我在这做错了什么?

回答

1

编辑:我在评论中纠正了......只要删除response.end()电话,你应该看到像你期待的东西。

原始响应:你正在尝试做不能以这种方式完成......到HTTP请求的响应只会被发送一次:当response.end()被称为(第一次)。 评论者指出这不是真的正确:可以正确地说,在调用end()之后,在响应中不会发送更多数据。

如果要显示其内容的变更都基于第服务器端操作的HTML页面,则需要使用类似的WebSockets(例如节点兼容http://socket.io/库)和一些客户端JavaScript,这比上面的代码稍微复杂一些。 一般来说,对于那些不仅仅追加响应或进行双向通信的非平凡用户界面而言,这种方法更可取

+0

这根本不是真的,'response.write()'调用实际上会将数据刷新到浏览器,并且'response.end()'执行最终刷新,然后终止连接。但我不确定为什么现代浏览器实际上不显示这些中间刷新。我以前一直这样做,可能会有特定的标题需要发送 –

+0

的确,您是正确的,感谢您的反馈! – nicolaskruchten