今天我打算玩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});
});
});
答案 0 :(得分:2)
当客户端向服务器发送内容时,on('send')
函数仅将响应发送到事件来自的特定套接字(socket.emit
)。
要将此消息发送给除发送者之外的所有已连接客户端,您必须使用以下代码:
socket.broadcast.emit('update', { message: data.message});
请注意,这会排除调用广播的套接字。要将它真正发送到所有连接的套接字,请使用此功能(我认为这是您真正想要的):
io.sockets.emit('update', { message: data.message});
(两者都必须在您当前呼叫socket.emit(..)
)的地方调用