使用node.js连接到已经建立的UNIX套接字?

Ana*_*pon 9 javascript sockets linux unix-socket node.js

我正在开发一个node.js应用程序,它将连接到UNIX套接字(在Linux机器上),并促进网页和该套接字之间的通信.到目前为止,我已经能够在我的主app.js中创建套接字并与此代码来回通信:

var net = require('net');
var fs = require('fs');
var socketPath = '/tmp/mysocket';

fs.stat(socketPath, function(err) {
    if (!err) fs.unlinkSync(socketPath);
    var unixServer = net.createServer(function(localSerialConnection) {
        localSerialConnection.on('data', function(data) {
            // data is a buffer from the socket
        });
        // write to socket with localSerialConnection.write()
    });

unixServer.listen(socketPath);
});
Run Code Online (Sandbox Code Playgroud)

此代码使node.js创建一个UNIX套接字,/tmp/mysocket并通过nc -U /tmp/mysocket在命令行上进行测试来获得良好的通信.然而...

我想从我的node.js应用程序建立与现有UNIX套接字的连接.使用我当前的代码,如果我从命令行创建套接字(nc -Ul /tmp/mysocket),然后运行我的node.js应用程序,套接字和我的应用程序之间没有通信('connect'事件不是从node.js服务器对象触发的).

有关如何完成此任务的任何提示?我使用node.js函数的实验net.createSocket而不是net.createServer迄今为止失败了,我不确定这是否是正确的轨道.

dus*_*uff 17

您正在寻找的方法是net.createConnection(path):

var client = net.createConnection("/tmp/mysocket");

client.on("connect", function() {
    ... do something when you connect ...
});

client.on("data", function(data) {
    ... do stuff with the data ...
});
Run Code Online (Sandbox Code Playgroud)