Создает ли Node.js "новый сокет" файловый сокет Unix? - PullRequest
6 голосов
/ 23 сентября 2011

Я работаю с node.js последние пару недель, и мне нужно реализовать протокол FAST-CGI. Проблема в том, что когда я создаю сокет UNIX (через «новый сокет»), мне нужно получить имя файла или дескриптор файла. Но socket.fd имеет значение null (параметр по умолчанию).

Мой вопрос: создает ли «новый сокет» объектный файл сокета операционной системы, и если да, то как я могу получить дескриптор или имя файла сокета?

Я не уверен, что именно так я должен создать Socket, но вот случай:
узел:

var net = require(net)
var socket = new net.Socket()
console.log(socket);

{
 bufferSize: 0,
 fd:null,
 type: null,
 allowHalfOpen: false,
 _writeImpl: [Function],
 _readImpl: [Function],
 _shutdownImpl: [Function]
}

1 Ответ

7 голосов
/ 23 сентября 2011

Хорошо, когда вы подключаете сокет, socket.fd не является нулевым, по крайней мере, в моем случае, поэтому приведите пример для примера.

Обратите внимание, что вы также можете указать существующий дескриптор файла всоздание сокета .

Редактировать:

var net = require('net'),
    fs = require('fs'),
    sock;

// Create socket file
fs.open('/tmp/node.test.sock', 'w+', function(err, fdesc){
    if (err || !fdesc) {
        throw 'Error: ' + (err || 'No fdesc');
    }

    // Create socket
    sock = new net.Socket({ fd : fdesc });
    console.log(sock);
});
...