Home >Web Front-end >Front-end Q&A >Electron produces QQ music client - communication between main process and rendering process

Electron produces QQ music client - communication between main process and rendering process

灭绝师太
灭绝师太Original
2021-08-26 17:56:222405browse

The Electron main process manages all web pages and their corresponding rendering processes, while the rendering process can only manage the corresponding web pages. The collapse of one rendering process will not affect other rendering processes; so how do the two processes communicate?

Electron produces QQ music client - communication between main process and rendering process

Electron has two processes: the main process and the rendering process.

                                                                                                                                                                   . Each BrowserWindow instance runs the web page during its rendering process. When a BrowserWindow instance is destroyed, the corresponding rendering process will also be terminated.

2. The main process manages all web pages and their corresponding rendering processes.

           

                   

Rendering Process

1. The rendering process can only manage the corresponding web page. The crash of one rendering process will not affect other rendering processes.

2. The rendering process communicates with the main process through IPC to perform GUI operations on the web page. Calling local GUI-related APIs directly from the renderer process is restricted due to security and possible resource leaks.

Communication between processes can be done through the Inter-Process Communication (IPC) module: ipcMain and ipcRenderer

To create a window, call BrowserWindow Class, but can only be used in the main process (main.js):


    const { BrowserWindow } = require('electron')
    const win = new BrowserWindow()

To call the main process from the rendering process, please use the IPC module: For example, customize the window closing function in purge window mode

     1. 首先由主进程向渲染进程发送消息,告诉它窗口的id(开启了多个渲染进程);

  win.once('ready-to-show', () => {
    win.webContents.send('init_win_id', win.id);
    win.show()
  });

      2.  在渲染进程接收winid,并在关闭窗口时发送给主进程

    //渲染进程监听init_win_id事件(自定义),将winid赋给全局变量winid
    let winid = '';
    require('electron').ipcRenderer.on('init_win_id', (event, message) => {
		winid = message;
    })
    // 关闭窗体
	function closex(){		 
		 //渲染进程里把窗口id发给主进程

		const { ipcRenderer } = require('electron')
		ipcRenderer.send('close_window', winid);
	 
	}

    3. 在主进程中接收需要关闭的渲染进程

    // 主进程获取winid关闭窗体
    ipcMain.on('close_window', (event, arg) => {    
        //app.quit()单个窗口可以直接app.quit()
        //win.close();
        // 1、接收渲染进程发来的窗口id
            let winid = arg;    
            console.log(winid);    
        // 2、通过id找到对应的BrowserWindow对象(win、win22),调用这个对象的close()关闭对应的窗口
            BrowserWindow.fromId(winid).close();
   
        })

The above is the detailed content of Electron produces QQ music client - communication between main process and rendering process. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn