猿问

使用 socket.io 向目标客户端发送数据

例如,在客户端,我有两个注册用户和在线用户。


UID 1:莱昂

UID 2:阿尔伯特


莱昂想知道有多少信用。


例如,Leon点击按钮获得信用,所以:


socket.emit('my_credit', 1);

在服务器端,我使用以下代码:


例子:


var express = require('express');

var server  = express();

var app    = require('http').createServer(server);

var io     = module.exports.io = require('socket.io')(app);


io.on('connection', function(socket){


    socket.on('my_credit', function(uid){

       getUserCredit(uid, (result) => {

            socket.emit('my_credit', result);

        })

    });


});

现在,在客户端,所有用户都会收到这个值!如果我只想让 Leon 收到这个值,我该怎么办?


我如何在服务器端找到正确的 id ?


郎朗坤
浏览 452回答 2
2回答

慕慕森

要将消息发送到目标客户端,请使用以下to 功能:例如:io.sockets.to(/* Unique ID */).emit('message');或者:io.on('connection', function (socket) {    socket.on('check', function(){        io.sockets.to(socket.id).emit('check', 'Just You: ' + socket.id);    });});

Helenr

所以基本上,目前,除了检查套接字 id 之外,我不知道任何其他解决方案。发射客户端的示例:socket.emit('my_credit', {user: 1, id: socket.id});接收服务器端:var express = require('express');var server  = express();var app    = require('http').createServer(server);var io     = module.exports.io = require('socket.io')(app);io.on('connection', function(socket){    socket.on('my_credit', function(uid){        getUserCredit(uid.user, function(result){            socket.emit('my_credit', {res: result, id: uid.id});        })    });});并接收客户端:socket.on('my_credit', (message) => {if (message.id !== socket.id) return;// your code here})
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答