大家好,欢迎来到IT知识分享网。
一、什么是管道?
管道通信即发送进程以字符流形式将大量数据送入管道,接收进程可从管道接收数据,二者利用管道进行通信。
二、为什么要使用管道通信
electorn 已经有 ipc 通信,这是一种管道通信,那为什么还要做命名管道通信呢?
原因很简单,因为 electron+node 这种方式满足不了目前的业务需求,一些底层的操作无法完成,需要用到 c++ 来实现,而这就涉及 c++ 进程与 electorn 进程之间的通信,单单只依靠 ipc 通信是实现不了的。
三、 例子
这是一个全局监听鼠标键盘的例子,c++实现监听鼠标键盘,通过命名管道通信回调响应。
本例中使用到的c++执行文件:
test-mouse.exe
下载地址:
https://pan.baidu.com/s/1NT5Q8ZvHfLyJ_hB2bCqiww?pwd=s4xz
electron:
app.whenReady().then(() => { createWindow(); exe.data = spawn("./test-mouse.exe",{ detached: true, stdio:'pipe' }); setTimeout(()=>{ const PIPE_PATH = "\\\\.\\Pipe\\RJ_pipe"; exe.client = net.connect(PIPE_PATH, ()=> { console.log('Client: on connection'); }) exe.client.on('data', (data)=> { console.log(data.toString()); }); exe.client.on('end', ()=> { console.log('Client: on end'); exe.client=null; }) },100) });
效果:按键盘会返回2
四、总结
这种命名管道通信的实现还是很简单的,使用 spawn 启动 exe 后,连接管道就能实现不同进程间的通信。
对于不会 c++ addons 的小伙伴来说,是一种很好的实现方式,当然也会有缺点,就是需要打包成一个可执行程序。
下期给大家分享更多 electron 实战中的点滴,如果大家对此感兴趣,欢迎各位关注、留言,大家的支持就是我的动力!
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/56701.html