据我所知,除非另有说明,如果服务器发送消息,所有客户端都应该收到它。但就我而言,只有一个客户收到消息。
客户端:
(function () {
window.Network = {
socket : null,
initialize : function(socketURL) {
this.socket = io.connect(socketURL);
this.socket.on('new move', this.add);
},
add : function(data) {
var msg = $('<div class="msg"></div>')
.append('<span class="text">' + data.x+'/'+data.y + '</span>');
$('#messages')
.append(msg)
.animate({scrollTop: $('#messages').prop('scrollHeight')}, 0);
},
send : function(data) {
this.socket.emit("move",data);
return false;
}
};
}());
服务器:
io.sockets.on('connection', function (socket) {
socket.on('move', function (data) {
console.log(data);
socket.emit("new move",data);
});
});
如果我打开多个客户端并使用“发送”功能,则只有发送它的客户端才会收到来自服务器的发送。 知道我做错了什么吗? 谢谢
最佳答案
要在服务器端全局发出,请使用以下命令:
io.sockets.emit('new move', 'data1');
发送到当前套接字:
socket.emit('function', 'data1', 'data2');
向除客户之外的所有人广播:
socket.broadcast.emit('function', 'data1', 'data2');
关于Node.js 只有一个客户端正在接收消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14849247/