原生uds
1、安装unix-domain-socket
执行npm i unix-domain-socket
2、测试代码
服务端
let UnixSocket = require('unix-domain-socket')
let us = new UnixSocket('/tmp/echo.sock')
us.listen((conn, msg) => {
console.log(msg)
us.reply(conn, 'alice')
})
客户端
let UnixSocket = require('unix-domain-socket')
let us = new UnixSocket('/tmp/echo.sock')
us.on('connect', () => {
console.log('Connected')
})
us.on('data', (data) => {
console.log('Data', data)
})
us.on('error', (err) => {
console.log('Error', err)
})
us.on('close', () => {
console.log('Close')
})
us.send('111', (response) => {
console.log(response)
})
uds地址的websocket
引入ws,将原来websocket的地址换成下面这种格式的就可以了,其他用法和带端口的ws一样
const WebSocket = require('ws');
//注意地址格式
let socket = new WebSocket("ws+unix:///tmp/echo.sock");
socket.onmessage = function(event) {
console.log(`[message] Data received from server: ${event.data}`);
};
socket.onclose = function(event) {
if (event.wasClean) {
console.log(`[close] Connection closed cleanly, code=${event.code} reason=${event.reason}`);
} else {
// 例如服务器进程被杀死或网络中断
// 在这种情况下,event.code 通常为 1006
console.log('[close] Connection died');
}
};
socket.onerror = function(error) {
console.log(error);
};
socket.onopen = function(e) {
console.log("[open] Connection established");
console.log("Sending to server");
socket.send("appVersion");
};