別のクライアントで受信した別のメッセージに基づいて選択された特定のクライアントにメッセージを「送信」したいのですが、どうすればよいですか。
各クライアントを自分の「部屋」に参加させて放送することを考えています。もっと良い方法はありますか?
socket.ioバージョン1.0以降のUPDATE
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');
Socket.io v1.0 <の場合:
io.to(socketID).emit('testEvent', 'yourMessage');
SocketIDを使用して特定のクライアントに送信する。
サーバー/パッケージ:socket.io:
io.to(socketID).emit('testEvent', 'yourMessage');
Client /パッケージ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
オブジェクトのプロパティです