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

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

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

এর জন্য FirebaseServerApp ব্যবহার করুন:

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

FirebaseServerApp জীবনচক্র

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

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) পরিবেশের মধ্যে প্রমাণীকৃত ব্যবহারকারী সেশনের ব্রিজিং সক্ষম করে। একটি Auth ID টোকেন ধারণকারী Firebase Auth SDK-এর দৃষ্টান্তগুলি একটি FirebaseServerApp অবজেক্টের সাথে আরম্ভ করা হলে, কোনো সাইন-ইন পদ্ধতি চালু করার জন্য অ্যাপ্লিকেশনের প্রয়োজন ছাড়াই শুরুতে ব্যবহারকারী সাইন ইন করার চেষ্টা করবে।

একটি 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 কল করতে ব্যবহার করে। ফলস্বরূপ টোকেনটি সমস্ত ফায়ারবেস পরিষেবার অনুরোধে অন্তর্ভুক্ত করা হয়, যা ব্যাকএন্ড অ্যাপটিকে যাচাই করার অনুমতি দেয়।

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

FirebaseServerApp একটি বিকল্প প্রদান করে। FirebaseServerApp আরম্ভ করার সময় যদি একটি ক্লায়েন্ট-জেনারেটেড অ্যাপ চেক টোকেন প্রদান করা হয়, তাহলে এটি Firebase পণ্য SDK-এর দ্বারা Firebase পরিষেবাগুলি চালু করার সময় ব্যবহার করা হবে, একটি অ্যাপ চেক 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 প্রমাণীকরণ পরিষেবা কর্মীর একটি রেফারেন্স বাস্তবায়নের জন্য পরিষেবা কর্মীদের সাথে সেশন ব্যবস্থাপনা পড়ুন। এছাড়াও FirebaseServerApp ইনিশিয়ালাইজেশনে ব্যবহারের জন্য হেডার থেকে এই টোকেনগুলিকে কীভাবে পার্স করতে হয় তা প্রদর্শন করে এমন কোডের সার্ভার সাইড পরিবর্তনগুলি দেখুন৷