2013-02-17 53 views
1

因此,我们有以下的Node.js代码 -的Node.js - 广播消息到所有连接的

var http = require('http'); 

var server = http.createServer(function (request, response) { 
    response.writeHead(200, {"Content-Type": "text/plain"}); 
    response.write("Hello World! \n"); 
    response.end("); 
}).listen(8125); 

比方说,我要广播消息给所有连接的用户,在response write方法createServer函数不这样做。

那么如何将消息广播给所有连接的用户/客户?

有没有办法用纯Node.js做到这一点?因为我现在只是在学习它,现在我更喜欢使用纯节点.js。

+2

我会说[socket.io](http://socket.io/) – 2013-02-17 02:26:41

回答

3

这些是HTTP请求,因此它是不可能的。 HTTP请求在第一次连接时开始,并在所有数据已发送时结束。

在你的情况下,数据是

response.writeHead(200, {"Content-Type": "text/plain"}); 
response.write("Hello World! \n"); 

然后连接结束

response.end("); 

如果你正在寻找的东西,以保持住连接着,看看这些:

socket.io - 一个支持所有平台的实时传输库,并退回旧版软件。
WebSocket-Node - 客户端和服务器websocket实现。
Faye - 使用Bayeux协议的发布 - 订阅消息系统。

我只使用socket.io这就是广播是如何完成的。

var io = require('socket.io').listen(80); 

io.sockets.on('connection', function (socket) { 
    socket.broadcast.emit('user connected'); 
}); 
+6

我讨厌stackoverflow!这一切都涉及到谁更快键入:) – 2013-02-17 02:31:32

+5

@NikitaLeonov去练习输入! ;) – hexacyanide 2013-02-17 02:32:09

+0

使用纯Node.js可以做到这一点吗?因为我现在只是在学习它,现在我更喜欢使用纯节点.js ... – Israelg99 2013-02-17 14:06:11