簡體   English   中英

使用 socket.io 向目標客戶端發送數據

[英]Sending Data to Target Client with 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?

要向目標客戶端發送消息,請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);
    });

});

喲,所以基本上,目前。 除了檢查套接字 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
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM