我想向特定客户端“发出”消息,该消息是根据在不同客户端收到的另一条消息选择的,我该怎么办?
我正在考虑将每个客户加入他们自己的“房间”,然后进行广播。还有更好的方法吗?
答案 0 :(得分:30)
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);
});
});
未经测试......但它应该给你一个想法
答案 1 :(得分:18)
对于socket.io版本1.0,请使用:
io.to(socketid).emit('message', 'whatever');
答案 2 :(得分:0)
使用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
对象上的一个属性
答案 3 :(得分:0)
对于socket.io v1.0 <使用:
io.to(socketID).emit('testEvent', 'yourMessage');