Nodejs聊天,所有客户端都一样

时间:2014-01-19 13:52:08

标签: node.js sockets

今天我打算玩NodeJS,我创建了这个: http://i.stack.imgur.com/ZNssI.png

现在,当一个新的客户端出现时,他看到的不是fbffbbfbfbfbfbffbbbbfbfbf。当我发送一个带有fbffbbfbfbfbfbffbffbbfbffbf的套接字时,它是如何在所有客户端页面显示的?就像聊天一样?

代码:

var express = require('express')
var app = express();
var jade = require('jade');
var io = require('socket.io').listen(app);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.set("view options", { layout: false });
app.configure(function() {
    app.use(express.static(__dirname + '/public'));
});
app.listen(80);

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

io.sockets.on('connection', function (socket) {
    socket.on('send', function(data) {
        console.log(data);
        socket.emit('update', { message: data.message});
    });
});

1 个答案:

答案 0 :(得分:2)

当客户端向服务器发送内容时,on('send')函数仅将响应发送到事件来自的特定套接字(socket.emit)。

要将此消息发送给除发送者之外的所有已连接客户端,您必须使用以下代码:

socket.broadcast.emit('update', { message: data.message});

请注意,这会排除调用广播的套接字。要将它真正发送到所有连接的套接字,请使用此功能(我认为这是您真正想要的):

io.sockets.emit('update', { message: data.message});

(两者都必须在您当前呼叫socket.emit(..))的地方调用