Reactの勉強中でFirebaseも使用したチャットアプリを作成しているのですが、ルームIDの取り扱いに悩んでいます。
ルームIDは、FirebaseのAuthenticationを使用しメールアドレスでユーザー登録した際に生成するマイルームIDとフレンド登録した際にフレンドとの1対1用のルームIDの2種類の使用を想定しています。
現在は、下記コードで10桁の乱数を生成し、ルームIDとして使用しているのですがいくつかの懸念点が残っており、その他で何か良い方法がないかといろいろ調べたのですが、主にフレンド機能などもない1対1のチャットアプリ解説の記事ばかりで、解決することができませんでした。
FirebaseでこういったルームIDを持たせるときのIDはどのような方法で生成するのがよいかお教え頂けますでしょうか。
■懸念点
・10桁だと処理に時間がかかりサイト表示が重くなってしまう
・練習用なので大丈夫だが、多くのユーザーが使用すると考えたとき10桁の乱数では重複が発生する可能性がある。
React
1 //10桁のRoomIDを生成 2 const roomIdNumber = []; 3 /** 最小値と最大値 */ 4 const min = 1, max = 10; 5 const intRandom = (min, max) => { 6 return Math.floor(Math.random() * (max - min + 1)) + min; 7 }; 8 9 /** 重複チェックしながら乱数作成 */ 10 for(let i = min; i <= max; i++){ 11 while(true){ 12 let tmp = intRandom(min, max); 13 if(!roomIdNumber.includes(tmp)){ 14 roomIdNumber.push(tmp); 15 break; 16 } 17 } 18 }
質問への回答
処理時間については、ネット環境が悪かったようで別の環境でためしたところ、時間はかからず処理することができたので、「処理に時間」については大丈夫そうです。
firebaseでルームIDを作成するとした場合、私が質問させていただいた方法は適切なのか不安な部分があるのですがどうでしょうか?