簡體   English   中英

node.js socket.io 如何發送到特定客戶端?

[英]node.js socket.io How to emit to a particular client?

我想向特定客戶端“發送”一條消息,該消息是根據在不同客戶端收到的另一條消息而選擇的,我該怎么做?

我正在考慮將每個客戶加入他們自己的“房間”然后進行廣播。 有沒有更好的辦法?

socket.io 1.0 及以上版本的更新

io.to(socketid).emit('message', 'whatever');

對於舊版本:

您可以將每個客戶端作為屬性存儲在一個對象中。 然后您可以根據消息查找套接字:

var basket = {};

io.sockets.on('connection', function (socket) {
  socket.on("register", function(data) {
    basket[data.nickname] = socket.id;
  });
  socket.on("privmessage", function(data){
    var to = basket[data.to];
    io.sockets.socket(to).emit(data.msg);
  });
});

未測試......但它應該給你一個想法

對於 socket.io 1.0 版使用:

io.to(socketid).emit('message', 'whatever');

使用 socketID 發送到特定客戶端。

服務器/包:socket.io:

io.to(socketID).emit('testEvent', 'yourMessage');

客戶端/包 socket.io-client:

io.sockets.on('connection',(socket) => {
  socket.on("testEvent", data => {
    console.log(data);
  });
});

您可以通過以下方式訪問 socketID:

io.on('connection', (socket, next) => {
    const ID = socket.id // id property on the socket Object
})

它只是socket對象上的一個屬性

對於 socket.io v1.0< 使用:

io.to(socketID).emit('testEvent', 'yourMessage');

暫無
暫無

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

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