まず、ここに私のコードです:JavaScript配列データのすべての
var users = {};
//User Connect
io.sockets.on('connection', function (socket) {
socket.emit('connected');
socket.on('session', function (session){
users[socket.id] = [session, socket];
console.log(users);
socket.emit("session_established");
//User Disconnect
socket.on('disconnect', function(){
delete users[socket.id];
socket.broadcast.emit('disconnect', { data : session});
});
//The above all works as it should, now here it what I want to do:
socket.on('chatMessage', function (message, userID) {
users[userIDsSocket][userID].emit('chatMessageResponse', { data: message});
});
});
});
はここで、私のデータは次のようになります(これは一人のユーザのためです):
{ '17819180631362480757': //this value is users[socket.id]
[ '1', //this value is session at the top, and in the bottom part userID
{ id: '17819180631362480757', //The rest of this is the socket data
namespace: [Object],
manager: [Object],
disconnected: false,
ackPackets: 0,
acks: {},
flags: [Object],
readable: true,
store: [Object],
_events: [Object] } ] }
これは私がしなければならないものです(英語での機能の仕方):
ああ、最初に、ユーザーがウィンドウを開いている場合、複数のユーザーID /セッションが同じである可能性があります複数のタブ/コンピュータ/ devi CEは、ので、それは同じユーザーID
socket.on('chatMessage', function (message, userID) {
for each (users[*].userID==userID)
{
users[*][userID].emit('chatMessageResponse', { data: message});
}
});
を持っているすべてのソケットにそれを送信する必要があるので、私は置くところ私は(各パート無視socket.idて行くだろうかわからない[*]
私はそれを動作させることができません、私はこれを行い、接続されているすべての人にそれを送信することができますが、何も呼び出されていないので、userIDが記載されていません –
、それはどのようにすべきなのか。 –
素晴らしい。 'for 'を使うときに気にしておきたいことは、プロトタイプのメソッドのように、あなたが期待していないプロパティをループさせるかもしれないということです。したがって、ifのような別の条件を追加するのが最も安全かもしれません。 if(object.hasOwnProperty(key)) '幸運なコーディングと幸せなコーディング! – JKing