2016-06-13 74 views
4

在文檔的套接字連接,還有一個功能,通過一個路徑來創建一個插座,
socket.connect(path[, connectListener]) link如何創建具有路徑

我嘗試這樣做:

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

const TEMP_DIR = os.tmpDir(); 
const TEMP_FILE = path.join(TEMP_DIR, 'my.sock'); 

console.log(TEMP_FILE) 

fs.open(TEMP_FILE, 'w+', function(err, fdesc){ 
    if (err || !fdesc) { 
     throw 'Error: ' + (err || 'No fdesc'); 
    } 
    sock = new net.Socket({ 
     fd : fdesc, 
     allowHalfOpen: true, 
     readable: true, 
     writable: true 
    }); 
}); 

但收到此錯誤:

net.js:32 
    throw new TypeError('Unsupported fd type: ' + type); 
^

TypeError: Unsupported fd type: FILE 
    at createHandle (net.js:32:9) 
    at new Socket (net.js:128:20) 
    at /Users/timaschew/dev/myproject/test.js:20:12 
    at FSReqWrap.oncomplete (fs.js:82:15) 

我也試過其他標誌:wa+,a,但同樣的錯誤。

我使用節點V4.2.0上OSX 13年11月10日

我在尋找一個解決方案不使用的端口,並與本地節點模塊。如果它在linux,osx和windows上工作,它也會很好。

回答

1

你應該使用server.listen(PATH)

const net = require('net'); 
const path = require('path'); 
const os = require('os'); 

const TEMP_DIR = os.tmpDir(); 
const TEMP_FILE = path.join(TEMP_DIR, 'my.sock'); 

net.createServer(...).listen(TEMP_FILE); 

socket.connect()是連接到現有的域套接字(換句話說,以實現客戶端)。