最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何从socket.io服务器向特定客户端发送请求?

IT培训 admin 6浏览 0评论

如何从socket.io服务器向特定客户端发送请求?

我将用户数据保存在一个数组中,请参阅下面的代码服务器代码

socket.on('add user', function(data) {
   if (users.indexOf(data.id) == -1) {
    users.push({
            id: socket.id,
            userId: data.id,
            firstName: data.firstName,
            lastName: data.lastName
        });     
    }

    len = users.length;
    len--;
    io.emit('user join', users, users[len].userId, users[len].id);
});

我正在向用户发送请求,因为我首先要检查用户是否在线,以便向特定用户发送请求。如果用户在那里我将用户socket.id分配给userId变量,基于我发送的数据,请参阅下面的代码服务器代码

socket.on('addNewFriend', function(userId) {
    console.log(userId);
    for(var i=0;i<users.length;i++){
        if(users[i].userId==userId){
            var socketid=users[i].id;
            console.log(socketid);
    io.to(socketid).emit('addFriend',"hai");

        }
    }


});
回答如下:

不要只保留套接字ID,也要保持套接字连接本身。

users.push({
    id: socket.id,
    socket: socket
    userId: data.id,
    firstName: data.firstName,
    lastName: data.lastName
});   

如果你使用地图而不是数组来保存用户会更容易,

users[socket.id] = {
    socket: socket
    userId: data.id,
    firstName: data.firstName,
    lastName: data.lastName
}

然后,当您要发送消息时,请使用套接字连接,

users[socketId].socket.emit(/*args*/)

如果您将套接字保存在数组中,则需要手动过滤用户对象,然后执行相同操作。

编辑:所以监听器的完整代码如下,

socket.on('addNewFriend', function(userId) {
    for(var i=0;i<users.length;i++){
        if(users[i].userId == userId){
            var socketId = users[i].id;
            console.log(socketId);
            users[socketId].socket.emit('addFriend', "hai");
        }
    }
});

如何从socket.io服务器向特定客户端发送请求?

我将用户数据保存在一个数组中,请参阅下面的代码服务器代码

socket.on('add user', function(data) {
   if (users.indexOf(data.id) == -1) {
    users.push({
            id: socket.id,
            userId: data.id,
            firstName: data.firstName,
            lastName: data.lastName
        });     
    }

    len = users.length;
    len--;
    io.emit('user join', users, users[len].userId, users[len].id);
});

我正在向用户发送请求,因为我首先要检查用户是否在线,以便向特定用户发送请求。如果用户在那里我将用户socket.id分配给userId变量,基于我发送的数据,请参阅下面的代码服务器代码

socket.on('addNewFriend', function(userId) {
    console.log(userId);
    for(var i=0;i<users.length;i++){
        if(users[i].userId==userId){
            var socketid=users[i].id;
            console.log(socketid);
    io.to(socketid).emit('addFriend',"hai");

        }
    }


});
回答如下:

不要只保留套接字ID,也要保持套接字连接本身。

users.push({
    id: socket.id,
    socket: socket
    userId: data.id,
    firstName: data.firstName,
    lastName: data.lastName
});   

如果你使用地图而不是数组来保存用户会更容易,

users[socket.id] = {
    socket: socket
    userId: data.id,
    firstName: data.firstName,
    lastName: data.lastName
}

然后,当您要发送消息时,请使用套接字连接,

users[socketId].socket.emit(/*args*/)

如果您将套接字保存在数组中,则需要手动过滤用户对象,然后执行相同操作。

编辑:所以监听器的完整代码如下,

socket.on('addNewFriend', function(userId) {
    for(var i=0;i<users.length;i++){
        if(users[i].userId == userId){
            var socketId = users[i].id;
            console.log(socketId);
            users[socketId].socket.emit('addFriend', "hai");
        }
    }
});
发布评论

评论列表 (0)

  1. 暂无评论