Electron অ্যাপে Background Task এর জন্য IPC ব্যবহার

Background Process এবং Task Scheduling - ইলেকট্রন  (Electron) - Web Development

240

Electron অ্যাপ্লিকেশনগুলিতে Background Task (ব্যাকগ্রাউন্ড কাজ) চালানো অনেক গুরুত্বপূর্ণ হতে পারে, বিশেষত যখন আপনি বড় ডেটা প্রসেসিং, নেটওয়ার্ক অপারেশন বা দীর্ঘ সময় ধরে চলা কাজ করতে চান যা UI থ্রেডকে ব্যস্ত না রাখে। এটি নিশ্চিত করার জন্য, Electron এর IPC (Inter-Process Communication) ব্যবহৃত হয়, যা Main Process এবং Renderer Process এর মধ্যে সঠিকভাবে যোগাযোগ স্থাপন করতে সাহায্য করে।

IPC ব্যবহার করে, আপনি Renderer Process থেকে Main Process-এ ব্যাকগ্রাউন্ড কাজের জন্য অনুরোধ পাঠাতে পারেন, এবং Main Process সেই কাজটি সম্পন্ন করে তার ফলাফল Renderer Process-এ পাঠাতে পারে।

IPC ব্যবহার করে Background Task এর জন্য কনফিগারেশন


১. ব্যাকগ্রাউন্ড কাজের জন্য ipcMain এবং ipcRenderer ব্যবহার করা

Electron অ্যাপে Renderer Process ব্যবহারকারী ইন্টারফেস (UI) চালায়, এবং Main Process ব্যাকগ্রাউন্ড কার্যক্রম পরিচালনা করে, যেমন ফাইল অপারেশন, নেটওয়ার্ক অনুরোধ, ডেটাবেস এক্সেস ইত্যাদি। এই কাজগুলো সাধারণত Main Process-এ করা হয়, কারণ Renderer Process UI তে ফোকাস করা উচিত।

এখানে ipcMain (Main Process) এবং ipcRenderer (Renderer Process) ব্যবহার করে ব্যাকগ্রাউন্ড কাজের একটি সাধারণ উদাহরণ দেওয়া হয়েছে।


২. Main Process এ ব্যাকগ্রাউন্ড কাজ চালানো

Main Process এ আমরা ipcMain ব্যবহার করে ব্যাকগ্রাউন্ড কাজ শুরু করব এবং setTimeout বা setInterval এর মতো ফাংশন ব্যবহার করে কাজগুলো সঞ্চালিত হবে। ব্যাকগ্রাউন্ড কাজ শেষ হলে event.reply() ব্যবহার করে ফলাফল Renderer Process এ পাঠানো হবে।

উদাহরণ: Main Process (main.js)

const { app, BrowserWindow, ipcMain } = require('electron');

let mainWindow;

app.on('ready', () => {
  mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true,
    },
  });

  mainWindow.loadFile('index.html');

  // Renderer থেকে ব্যাকগ্রাউন্ড কাজের অনুরোধ গ্রহণ করা
  ipcMain.on('start-background-task', (event) => {
    console.log('ব্যাকগ্রাউন্ড কাজ শুরু হচ্ছে...');
    
    // ব্যাকগ্রাউন্ড কাজ (যেমন ডেটা প্রসেসিং বা লম্বা সময় নেয়ার কাজ)
    setTimeout(() => {
      console.log('ব্যাকগ্রাউন্ড কাজ শেষ!');
      event.reply('background-task-completed', 'ব্যাকগ্রাউন্ড কাজ সম্পন্ন হয়েছে');
    }, 5000);  // 5 সেকেন্ডের জন্য ব্যাকগ্রাউন্ড কাজ

  });
});

এই কোডে, Main Process একটি ব্যাকগ্রাউন্ড কাজ শুরু করে, যা ৫ সেকেন্ড সময় নেবে। এর পর, event.reply() ব্যবহার করে কাজের সফলতা Renderer Process এ পাঠানো হচ্ছে।


৩. Renderer Process থেকে ব্যাকগ্রাউন্ড কাজের জন্য অনুরোধ পাঠানো

Renderer Process থেকে Main Process-এ ব্যাকগ্রাউন্ড কাজের জন্য একটি অনুরোধ পাঠানো হবে ipcRenderer.send() ব্যবহার করে, এবং পরে ipcRenderer.on() এর মাধ্যমে ফলাফল গ্রহণ করা হবে।

উদাহরণ: Renderer Process (index.html)

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Background Task Example</title>
</head>
<body>
  <h1>Electron ব্যাকগ্রাউন্ড কাজ</h1>
  <button id="startBtn">ব্যাকগ্রাউন্ড কাজ শুরু করুন</button>
  <p id="status">এখনো কাজ শুরু হয়নি...</p>

  <script>
    const { ipcRenderer } = require('electron');

    // ব্যাকগ্রাউন্ড কাজ শুরু করার জন্য বাটনে ইভেন্ট
    document.getElementById('startBtn').addEventListener('click', () => {
      ipcRenderer.send('start-background-task');  // Main Process-এ কাজের অনুরোধ পাঠানো
    });

    // Main Process থেকে কাজের ফলাফল গ্রহণ করা
    ipcRenderer.on('background-task-completed', (event, message) => {
      document.getElementById('status').textContent = message;  // ফলাফল UI-তে দেখানো
    });
  </script>
</body>
</html>

এখানে, Renderer Process থেকে Main Process-এ ipcRenderer.send() ব্যবহার করে একটি অনুরোধ পাঠানো হচ্ছে, যাতে Main Process ব্যাকগ্রাউন্ড কাজ শুরু করে। যখন কাজ শেষ হবে, তখন ipcRenderer.on() এর মাধ্যমে ফলাফল গ্রহণ করা হবে এবং UI-তে দেখানো হবে।


৪. ব্যাকগ্রাউন্ড কাজের জন্য অন্যান্য ফাংশন ব্যবহার

আপনি setInterval(), fs, child_process বা অন্যান্য Node.js ফাংশন ব্যবহার করে আরও জটিল ব্যাকগ্রাউন্ড কাজ করতে পারেন। উদাহরণস্বরূপ:

  • ফাইল সিস্টেম অপারেশন: fs.readFile(), fs.writeFile() ইত্যাদি।
  • নেটওয়ার্ক অনুরোধ: http, axios বা fetch
  • বহু প্রক্রিয়ার কাজ: child_process ব্যবহার করে মূল অ্যাপ্লিকেশনের বাইরের স্ক্রিপ্ট চালানো।

উদাহরণ: Child Process ব্যবহার করে ব্যাকগ্রাউন্ড কাজ

const { exec } = require('child_process');

// ব্যাকগ্রাউন্ডে কমান্ড চালানো
exec('ls', (error, stdout, stderr) => {
  if (error) {
    console.error(`exec error: ${error}`);
    return;
  }
  console.log(`stdout: ${stdout}`);
  console.log(`stderr: ${stderr}`);
});

এখানে exec() ব্যবহার করে child process তৈরি করা হচ্ছে, যা ব্যাকগ্রাউন্ডে একটি কমান্ড চালায় এবং এর আউটপুট দেখায়।


৫. ব্যাকগ্রাউন্ড কাজের ফলাফল সংগ্রহ করা

কোনো ব্যাকগ্রাউন্ড কাজের শেষে ফলাফল সংগ্রহ করার জন্য, event.reply() বা ipcRenderer.on() ব্যবহার করা হয়। যেমন ফাইল পড়া, নেটওয়ার্ক অনুরোধ বা অন্য কোনো সময়সাপেক্ষ কাজ শেষ হলে, ফলাফল বা ত্রুটির বার্তা UI তে পাঠানো হয়।


সারাংশ

  • Main Process এবং Renderer Process এর মধ্যে IPC (Inter-Process Communication) ব্যবহার করে ব্যাকগ্রাউন্ড কাজ পরিচালনা করা যায়।
  • Renderer Process থেকে Main Process-এ ব্যাকগ্রাউন্ড কাজের জন্য অনুরোধ পাঠানো হয় এবং পরে কাজের ফলাফল গ্রহণ করা হয়।
  • setTimeout(), setInterval(), fs এবং child_process ব্যবহার করে ব্যাকগ্রাউন্ড কাজ সম্পন্ন করা হয়।
  • event.reply() এবং ipcRenderer.on() ব্যবহার করে কাজের ফলাফল UI-তে পাঠানো হয়।

এভাবে, Electron অ্যাপে ব্যাকগ্রাউন্ড কাজ পরিচালনা করার জন্য IPC একটি শক্তিশালী এবং কার্যকরী পদ্ধতি।

Content added By
Promotion

Are you sure to start over?

Loading...