node-ddk,electron,主进程通讯,窗口间通讯
https://blog.csdn.net/eli960/article/details/146207062
也可以下载demo直接演示
http://linuxmail.cn/go#node-ddk
import
在主进程
import main, { NODEDDK } from "node-ddk/main"
在渲染进程
import renderer, { NODEDDK } from "node-ddk/renderer"
主进程提供服务(请求返回)
在主进程注册一个自定义的服务
// 服务器名 如 do-sth
main.ipc.registerListenModule("do-sth", async (req) => {
console.log("do-sth req:", req)
return {
data: { ccc: "nihao", yourReqData: req.data, versions: process.versions },
}
})
在渲染进程访问自定义的服务
let req: NODEDDK.ModuleRendererRequest = {
module: "do-sth",
data: {
xxx: 123,
}
}
renderer.ipc.request(req).then((res) => {
console.log(res)
})
渲染进程提供服务(请求返回)
在渲染注册一个自定义的服务
// 服务名 如 someModule
renderer.ipc.registerListenModule("someModule", async (data) => {
return { data: { www: "I am window", lll: data.data } }
})
在主进程访问自定义的服务
main.ipc.request({
toWindowUniqueId: "main",
module: "someModule",
data: { lalalla: "啦啦啦" }
}).then(res => {
console.log("someModule response:", res)
})
在另一个窗口访问其他窗口提供的服务
let req: NODEDDK.ModuleRendererRequest = {
toWindowUniqueId: "main", // 提供服务的窗口的 uniqueId
module: "someModule",
data: {
intpuText: d.value,
}
}
renderer.ipc.request(req).then((res) => {
console.log(res)
})
渲染进程提供服务(消息通知)
在渲染注册一个自定义的消息接收器
// 名字为 "someReceiver"
renderer.ipc.registerMessageReceiver("someReceiver", (data) => {
console.log("someReceiver", data)
})
在主进程向渲染进程发送消息
main.ipc.sendMessage("someReceiver", { lalalla: "啦啦啦" })