首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Electron.js ipcMain发送消息

Electron.js ipcMain发送消息
EN

Stack Overflow用户
提问于 2022-11-12 18:04:30
回答 1查看 47关注 0票数 0

我正在开发一个electron.js应用程序。我可以轻松地通过ipcRenderer发送消息,如下所示。

代码语言:javascript
运行
复制
ipcRenderer.send('asynchronous-message', args)

通过这种方式发送消息,我可以通过ipcMain收集消息,如下所示。

代码语言:javascript
运行
复制
ipcMain.on('asynchronous-message', (event, arg) => {})

到目前一切尚好。但是,当我尝试从ipcMain发送消息到ipcRenderer时,send方法不起作用。我只能发送一条消息来回应发送的消息。

代码语言:javascript
运行
复制
event.sender.send('asynchronous-reply', res);

在没有事件值的情况下,我无法以任何方式向ipcRenderer发送消息。我试着用Setinterval不断地听这个页面,但是它让系统太累了。有什么方法,我可以发送消息通过ipcRenderer通过ipcMain而不设置一个websocket系统?

EN

回答 1

Stack Overflow用户

发布于 2022-11-18 04:36:18

您可以通过渲染器的web内容向呈现器发送消息。event.sender与渲染器的webContents相同。

因此,为了在没有event值的情况下向呈现程序进程发送消息,可以使用main中创建的窗口的webContents。例如:

代码语言:javascript
运行
复制
// in main
const mainWin = new BrowserWindow({// window properties});

... 

mainWin.webContents.send('some-channel', args);

或者,如果您有多个UI窗口(呈现程序进程),则可以从它的ID中获取要发送到的窗口。

代码语言:javascript
运行
复制
const winId = // some function to get the id of the correct browser window

const contents = BrowserWindow.fromId(winId).webContents;

contents.send('some-channel', args);

但是,在大多数情况下,我发现我最终使用的是您前面描述的双向过程。通常情况是在呈现程序过程中开始的,因为这是用户在UI上执行某些操作的地方。这会向main发送一条消息,然后可以使用event.sender将其发送回呈现器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74415348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档