私はノードjsを使用してマルチプレイヤーゲームのWebサイトを作成しています。したがって、ソケットが接続されるたびに、そのソケットを次のような配列に追加します
var users = [];
var games = [];
var joinKey = [];
var key = 0;
var usersKey = 101;
var gamesKey = 201;
io.sockets.on('connection', function (socket) {
socket.on('connect', function(){
console.log('connect');
var clientId = usersKey;
socket.clientId = clientId;
users[usersKey] = socket;
usersKey++;
socket.emit('getClientId', clientId);
console.log(socket.clientId + ' connected');
console.log('Total users: ' + users.length);
});
ここでは、ユーザーキーが101であるため、合計ユーザー数は102と表示され、0から100までの空白の値が自動的に記録されます。これは通常ではないと思います。また、インデックスを使用して他の配列からソケットを取得する場合、インデックスが「g201」のように文字列であるかどうかは未定義です。
socket.on('createNewGame', function(){
var game = [];
var clientId = socket.clientId;
game[clientId] = socket;
console.log(game);
var gameId = 'g' + gamesKey;
gamesKey++;
games[gameId] = game;
console.log('Total Games: ' + games.length)
socket.gameId = gameId;
var publicKey = ++key;
joinKey[publicKey] = gameId;
socket.emit('gameCreated', publicKey);
});
これがここでの配列の動作である場合、挿入とフェッチの方法がわかりません