Отправка данных целевому клиенту с помощью socket.io - PullRequest
1 голос
/ 05 апреля 2020

Например, на стороне клиента у меня есть два зарегистрированных пользователя и онлайн-пользователь.

UID 1: Leon UID 2: Альберт

Леон хочет знать, сколько у него кредитов.

например, Леон нажать кнопку получить кредит, значит:

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);
        })
    });

});

Теперь, на стороне клиента, все пользователи получают это значение! Если я хочу, чтобы только Леон получил это значение, как я могу это сделать?

Как я могу на стороне сервера найти точный идентификатор?

Ответы [ 2 ]

2 голосов
/ 06 апреля 2020

Для отправки сообщения целевому клиенту используйте to function :

Например:

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);
    });

});
1 голос
/ 05 апреля 2020

Yo! В общем, на данный момент я не знаю других решений, кроме проверки идентификатора сокета. Пример отправки клиентской стороны:

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
})
...