SSR (সার্ভার-সাইড রেন্ডারিং) সহ গতিশীল ওয়েব অ্যাপ্লিকেশনগুলিতে Firebase ব্যবহার করুন, SSR (সার্ভার-সাইড রেন্ডারিং) সহ গতিশীল ওয়েব অ্যাপ্লিকেশনগুলিতে Firebase ব্যবহার করুন, SSR (সার্ভার-সাইড রেন্ডারিং) সহ গতিশীল ওয়েব অ্যাপ্লিকেশনগুলিতে Firebase ব্যবহার করুন

আপনি যদি Firebase JS SDK বা অন্যান্য Firebase ক্লায়েন্ট SDK-এর সাথে কাজ করে থাকেন, তাহলে আপনি সম্ভবত FirebaseApp ইন্টারফেস এবং অ্যাপের উদাহরণ কনফিগার করার জন্য এটি কীভাবে ব্যবহার করবেন তার সাথে পরিচিত। সার্ভার সাইডে অনুরূপ ক্রিয়াকলাপ সহজতর করার জন্য, Firebase FirebaseServerApp প্রদান করে।

FirebaseServerApp হল FirebaseApp এর একটি রূপ যা সার্ভার-সাইড রেন্ডারিং (SSR) পরিবেশে ব্যবহারের জন্য ব্যবহৃত হয়। এতে Firebase সেশনগুলি চালিয়ে যাওয়ার জন্য সরঞ্জামগুলি অন্তর্ভুক্ত রয়েছে যা ক্লায়েন্ট সাইড রেন্ডারিং (CSR) / সার্ভার-সাইড রেন্ডারিং বিভাজনকে বিস্তৃত করে। এই সরঞ্জাম এবং কৌশলগুলি Firebase দিয়ে তৈরি এবং Firebase App Hosting মতো Google পরিবেশে স্থাপন করা গতিশীল ওয়েব অ্যাপগুলিকে উন্নত করতে সহায়তা করতে পারে।

FirebaseServerApp ব্যবহার করে:

  • ব্যবহারকারীর প্রেক্ষাপটের মধ্যে সার্ভার-সাইড কোড কার্যকর করুন, যেখানে Firebase Admin SDK-এর সম্পূর্ণ প্রশাসনিক অধিকার রয়েছে।
  • SSR পরিবেশে অ্যাপ চেকের ব্যবহার সক্ষম করুন।
  • ক্লায়েন্টে তৈরি করা একটি Firebase Auth সেশন চালিয়ে যান।

FirebaseServerApp জীবনচক্র

সার্ভার-সাইড রেন্ডারিং (SSR) ফ্রেমওয়ার্ক এবং অন্যান্য নন-ব্রাউজার রানটাইম যেমন ক্লাউড ওয়ার্কাররা একাধিক এক্সিকিউশন জুড়ে রিসোর্স পুনঃব্যবহার করে ইনিশিয়ালাইজেশন সময়ের জন্য অপ্টিমাইজ করে। FirebaseServerApp একটি রেফারেন্স কাউন্ট মেকানিজম ব্যবহার করে এই পরিবেশগুলিকে সামঞ্জস্য করার জন্য ডিজাইন করা হয়েছে। যদি কোনও অ্যাপ পূর্ববর্তী initializeServerApp এর মতো একই প্যারামিটার সহ initializeServerApp ইনস্ট্যান্স ব্যবহার করে, তবে এটি একই FirebaseServerApp ইনস্ট্যান্স গ্রহণ করে যা ইতিমধ্যেই ইনিশিয়ালাইজ করা হয়েছিল। এটি অপ্রয়োজনীয় ইনিশিয়ালাইজেশন ওভারহেড এবং মেমোরি অ্যালোকেশন কমিয়ে দেয়। যখন deleteApp একটি FirebaseServerApp ইনস্ট্যান্সে ইনস্ট্যান্স করা হয়, তখন এটি রেফারেন্স কাউন্ট হ্রাস করে এবং রেফারেন্স কাউন্ট শূন্যে পৌঁছানোর পরে ইনস্ট্যান্সটি মুক্ত হয়।

FirebaseServerApp দৃষ্টান্ত পরিষ্কার করা হচ্ছে

FirebaseServerApp ইনস্ট্যান্সে কখন deleteApp কল করতে হবে তা জানা কঠিন হতে পারে, বিশেষ করে যদি আপনি সমান্তরালভাবে অনেক অ্যাসিঙ্ক্রোনাস অপারেশন চালাচ্ছেন। FirebaseServerAppSettings এর releaseOnDeref ক্ষেত্রটি এটিকে সহজ করতে সাহায্য করে। যদি আপনি releaseOnDeref অনুরোধের স্কোপের আয়ুষ্কাল সহ একটি বস্তুর রেফারেন্স বরাদ্দ করেন (উদাহরণস্বরূপ, SSR অনুরোধের হেডার অবজেক্ট), ফ্রেমওয়ার্ক যখন হেডার অবজেক্টটি পুনরুদ্ধার করে তখন FirebaseServerApp তার রেফারেন্স গণনা কমিয়ে দেবে। এটি স্বয়ংক্রিয়ভাবে আপনার FirebaseServerApp ইনস্ট্যান্স পরিষ্কার করে।

এখানে releaseOnDeref ব্যবহারের একটি উদাহরণ দেওয়া হল:

/// Next.js
import { headers } from 'next/headers'
import { FirebaseServerAppSettings, initializeServerApp} from "@firebase/app";

export default async function Page() {
  const headersObj = await headers();
  appSettings.releaseOnDeref = headersObj;
  let appSettings: FirebaseServerAppSettings = {};
  const serverApp = initializeServerApp(firebaseConfig, appSettings);
  ...
}

ক্লায়েন্টে তৈরি প্রমাণিত সেশনগুলি পুনরায় শুরু করুন

যখন FirebaseServerApp এর একটি ইনস্ট্যান্স একটি Auth ID টোকেন দিয়ে শুরু করা হয়, তখন এটি ক্লায়েন্ট-সাইড রেন্ডারিং (CSR) এবং সার্ভার-সাইড রেন্ডারিং (SSR) পরিবেশের মধ্যে প্রমাণিত ব্যবহারকারীর সেশনের ব্রিজিং সক্ষম করে। FirebaseServerApp অবজেক্টের সাথে শুরু করা Firebase Auth SDK-এর উদাহরণগুলি একটি Auth ID টোকেন ধারণকারী অ্যাপ্লিকেশনটিকে কোনও সাইন-ইন পদ্ধতি ব্যবহার না করেই শুরু করার সময় ব্যবহারকারীকে সাইন ইন করার চেষ্টা করবে।

একটি Auth ID টোকেন প্রদান করলে অ্যাপগুলি ক্লায়েন্টে Auth-এর যেকোনো সাইন-ইন পদ্ধতি ব্যবহার করতে পারবে, যা নিশ্চিত করবে যে সার্ভার-সাইডে সেশনটি চলতে থাকবে, এমনকি সেই সাইন-ইন পদ্ধতিগুলির জন্যও যেখানে ব্যবহারকারীর ইন্টারঅ্যাকশন প্রয়োজন। অতিরিক্তভাবে, এটি সার্ভারে নিবিড় ক্রিয়াকলাপ যেমন প্রমাণিত Firestore কোয়েরি অফলোডিং সক্ষম করে, যা আপনার অ্যাপের রেন্ডারিং কর্মক্ষমতা উন্নত করবে।

/// Next.js
import { initializeServerApp } from "firebase/app";
import { getAuth } from "firebase/auth";

// Replace the following with your app's
// Firebase project configuration
const firebaseConfig = {
  // ...
};

const firebaseServerAppSettings = {
  authIdToken: token  // See "Pass client tokens to the server side
                      // rendering phase" for an example on how transmit
                      // the token from the client and the server.
}

const serverApp =
  initializeServerApp(firebaseConfig,
                      firebaseServerAppSettings);
const serverAuth = getAuth(serverApp);

// FirebaseServerApp and Auth will now attempt
// to sign in the current user based on provided
// authIdToken.

SSR পরিবেশে অ্যাপ চেক ব্যবহার করুন

অ্যাপ চেক এনফোর্সমেন্ট একটি অ্যাপ চেক SDK ইনস্ট্যান্সের উপর নির্ভর করে যা Firebase SDK গুলি অভ্যন্তরীণভাবে getToken কল করার জন্য ব্যবহার করে। ফলস্বরূপ টোকেনটি সমস্ত Firebase পরিষেবার অনুরোধে অন্তর্ভুক্ত করা হয়, যা ব্যাকএন্ডকে অ্যাপটি যাচাই করার অনুমতি দেয়।

তবে, অ্যাপ যাচাইকরণের জন্য নির্দিষ্ট হিউরিস্টিক অ্যাক্সেস করার জন্য অ্যাপ চেক SDK-এর একটি ব্রাউজারের প্রয়োজন হওয়ায়, এটি সার্ভার পরিবেশে শুরু করা যাবে না।

FirebaseServerApp একটি বিকল্প প্রদান করে। FirebaseServerApp ইনিশিয়ালাইজেশনের সময় যদি ক্লায়েন্ট-জেনারেটেড অ্যাপ চেক টোকেন প্রদান করা হয়, তাহলে Firebase পরিষেবা চালু করার সময় এটি Firebase পণ্য SDK দ্বারা ব্যবহার করা হবে, যার ফলে অ্যাপ চেক SDK ইনস্ট্যান্সের প্রয়োজন হবে না।

/// Next.js
import { initializeServerApp } from "firebase/app";

// Replace the following with your app's
// Firebase project configuration
const firebaseConfig = {
  // ...
};

const firebaseServerAppSettings = {
  appCheckToken: token // See "Pass client tokens to the server side
                       // rendering phase" for an example on how transmit
                       // the token from the client and the server.
}

const serverApp =
  initializeServerApp(firebaseConfig,
                      firebaseServerAppSettings);

// The App Check token will now be appended to all Firebase service requests.

ক্লায়েন্ট টোকেনগুলিকে সার্ভার-সাইড রেন্ডারিং পর্যায়ে পাস করুন

ক্লায়েন্ট থেকে সার্ভার-সাইড রেন্ডারিং (SSR) পর্যায়ে প্রমাণিত Auth ID টোকেন (এবং অ্যাপ চেক টোকেন) প্রেরণ করতে, একজন পরিষেবা কর্মী ব্যবহার করুন। এই পদ্ধতিতে SSR ট্রিগার করে এমন ফেচ অনুরোধগুলিকে আটকানো এবং অনুরোধ শিরোনামে টোকেনগুলি যুক্ত করা অন্তর্ভুক্ত।

Firebase Auth পরিষেবা কর্মীর রেফারেন্স বাস্তবায়নের জন্য পরিষেবা কর্মীদের সাথে সেশন ব্যবস্থাপনা দেখুন। এছাড়াও FirebaseServerApp ইনিশিয়ালাইজেশনে ব্যবহারের জন্য হেডার থেকে এই টোকেনগুলি কীভাবে পার্স করতে হয় তা দেখানোর কোডের জন্য সার্ভার সাইড পরিবর্তনগুলি দেখুন।