Хорошо, значит, здесь какое-то недоразумение. Давайте начнем с того, что такое «сокет unix». Я думаю, вы думаете, что это просто файлоподобный элемент, который действует как сервер сам по себе через ОС/файловую систему. Это не совсем правильно. Хотя он действительно привязан к файловой системе, на самом деле это не традиционный файл. Вместо этого это похоже на сокет TCP / IP, за исключением того, что вместо привязки IP и порта привязывается путь к файлу.
Ключевым моментом здесь является то, что это просто связанный сокет с другим типом адреса (и некоторыми дополнительными возможностями, но здесь это выходит за рамки). Значит, что-то должно связывать сокет! В этом случае нам нужен сервер, как если бы мы общались через «обычный» порт. Если сервер не привязан к пути, вы получите сообщение об ошибке, как и при подключении к порту без прослушивателя.
Чтобы создать сервер на сокете домена unix в узле, это довольно просто:
'use strict';
const net = require('net');
const unixSocketServer = net.createServer();
unixSocketServer.listen('/tmp/unixSocket', () => {
console.log('now listening');
});
unixSocketServer.on('connection', (s) => {
console.log('got connection!');
s.write('hello world');
s.end();
});
Обратите внимание, что есть еще одно различие между «обычными» сокетами и сокетами домена unix: после того, как сервер работает с сокетом домена unix, он не уничтожается автоматически. Вместо этого вы должны unlink /tmp/unixSocket
повторно использовать этот «адрес»/путь
person
Avery
schedule
14.01.2018
/tmp/unixSocket
? Если первое, вы должны вместо этого использоватьnet.createServer()
. - person mscdex   schedule 05.01.2015