我还没弄明白如何使用socket.io
直接回复发件人我了解到io.sockets.emit发送给所有客户端,但我不会将信息发送回发件人。
代码:
socket.on('login', function (data) {
db.users.find({username: cc.lowerCase(data.username)}, function(err, users) {
if (users.length > 0) {
users.forEach( function(user) {
console.log(user.length);
if (user.password == data.password) {
io.sockets.emit('login', { username: user.username });
} else {
io.sockets.emit('error', { message: "Wrong username or password!" });
}
});
} else {
io.sockets.emit('error', { message: "Wrong username or password!" });
}
});
});
答案 0 :(得分:40)
当您的服务器侦听时,您通常会在"连接"处获得套接字。事件:
require('socket.io').on('connect', function(socket){
套接字连接2个点:客户端和服务器。当您在此套接字上发出时,您将向此特定客户端发出。
示例:
var io = require('socket.io');
io.on('connect', function(socket){
socket.on('A', function(something){
// we just received a message
// let's respond to *that* client :
socket.emit('B', somethingElse);
});
});
请注意,这是两个不同的电话:
socket.emit
:只发出一个插座io.sockets.emit
:向所有套接字发出答案 1 :(得分:0)
迟到但总比没有好;)
我有这样的感觉:
io.on('connection', function(socket){
socket.emit('some event', data);
socket.on('private event', function(message){
this.emit('other private event', message);
}
}
经过一些测试后,我意识到“这就是”。内部'私人活动'封闭仅发送给发件人。所以我尝试了这个.broadcast.emit',它将消息发送给除发件人之外的所有连接。我相信这是你想要的代码。