我一直在寻找我的问题的答案,所以任何帮助将不胜感激。我会尽量详细说明。
当用户访问该网站时,每个用户都可以使用此功能获得自己的房间:
socket.on('join', function(id){
socket.join(id.id);
console.log('user: ' + id.id + ' connected');
});
我有状态表和评论表。
我有这个ajax函数,它将注释表单数据发送到注释控制器,保存注释,然后从创建状态的人和所有评论过该状态的人中检索一系列id,数组是[7,8,9]。然后我将此数据传递给Socket.io服务器。
$('.comments-button').click(function(e){
e.preventDefault();
var formData = $(this).closest('.comments-form').serialize();
$.ajax({
type: 'POST',
url: '/'+websiteName+'/comments/add',
data: formData
}).done(function(data){
socket.emit('comment', {user_id: data});
});
});
我的问题是,在Socket.io服务器中我试图遍历已传递的id的数组,然后对于我想发送通知的每个id。我通过只传递一个id来发送单个套接字通知,但我无法弄清楚如何从一个数组中发送socket.io中的多个通知。
我知道你不会怎么做,只是作为我所寻找的一个例子:
socket.on('comment', function(data){
var id = data.user_id; // id's array = [7,8,9]
for(var user_id in id)
{
socket.to(user_id).emit('notification');
}
});
更新: 我发现如果我像这样编写forEach函数它可以工作
socket.on('comment', function(data){
[7,8,9].forEach(function (user_id) {
console.log('Notification sent to: ' + user_id);
socket.to(user_id).emit('notification')
});
});
但它不能与传入的data.user_id一起使用,即使它是[7,8,9]的数组
socket.on('comment', function(data){
data.user_id.forEach(function (user_id) {
console.log('Notification sent to: ' + user_id);
socket.to(user_id).emit('notification')
});
});
答案 0 :(得分:0)
一个简单的for语句就可以解决这个问题
for (var i = 0; i < id; i++) {
socket.to(id[i]).emit('notification')
}
或forEach
data.user_id.forEach(function (user_id) {
socket.to(user_id).emit('notification')
})