ある種のセッション ストアを使用したくない (または使用できない) 場合で、同じ user_id を持つ複数のソケットにメッセージを送信したい場合は、user_id をキーとして、ソケットの配列を値としてマップを格納できます。
var socketMap = {};
そして、ハンドシェイクデータでソケットへの参照を保存します
io.sockets.on('connection', function (socket) {
var userId = socket.handshake.userId;
if(!socketMap[userId]) socketMap[userId] = [];
socketMap[userId].push(socket);
});
または、通常のイベント データを使用する
socket.on('auth', function(data) {
var userId = data.userId;
var authToken = data.authToken;
... // verify the data...
if(!socketMap[userId]) socketMap[userId] = [];
socketMap[userId].push(socket);
});
メッセージを送信するソケットのリストが必要な場合
var sockets = socketMap['some_user_id'];