概述
2个nodejs程序的一种通讯方式,管道通讯,跟其他语言一样,管道通讯是一种特殊的socket通讯,普通的socket通讯是通过监听端口触发通讯机制,管道通讯是通过监听文件的方式进行通讯,一般用于单机的多进程通讯,这里演示的是2个node的进程间管道通讯,也可以是node跟其他语言生成的程序进行通讯,例如服务端是node的程序,客户端是exe程序,这样可以实现exe和node间的通讯。
直接上demo吧
服务端
const net = require('net');
let path = require('path');
let server = net.createServer(function (connect) {
//connect.setEncoding('binary');
connect.on('error', function (exception) {
console.log('socket error:' + exception);
connect.end();
});
//客户端关闭事件
connect.on('close', function (data) {
console.log('client closed!');
});
connect.on("data", function (data) {
//server接受到client发送的数据
console.log("接收到:" + data);
//server给client发送数据
connect.write("你好");
})
}).listen(
path.join('\\\\?\\pipe', '\\getAppListDesktop'));
server.on("error", function (exception) {
console.log("server error:" + exception);
});
客户端
let net = require('net');
let path = require('path');
let client = new net.Socket();
//client.setEncoding('binary');
client.connect(path.join('\\\\?\\pipe', '\\getAppListDesktop'), function () {
//client给server发送数据
client.write("你好,我是来自客户端");
});
client.on('data', function (data) {
console.log("收到服务端消息: " + data);
//此处接受到数据后就可以进行合适的处理了
//client.end();
});
client.on('close', function () {
console.log('Connection closed');
});
client.on('error', function (error) {
console.log('error:' + error);
client.destory();
})
运行方式
使用node 启动服务端
再使用node 启动客户端