Node.js Unix套接字没有回显

时间:2015-06-01 08:16:56

标签: node.js bash sockets unix

我正在尝试创建一个文件,我可以catecho字符串并接收字符串作为输出。如果我理解正确,我可以使用Unix套接字。

我试过写一台服务器,但我似乎无法识别我的输入:

'use strict';

var net = require('net'),
    fs = require('fs'),
    socketAddress = '/tmp/test-socket',
    server;

server = net.createServer(function (client) {
    var whole = '';
    client.on('data', function (data) {
        whole += data;
    });
    client.on('end', function () {
        client.write(whole);
    });
});

fs.unlink(socketAddress, function (error) {
    if (error && error.code !== 'ENOENT') {
        throw error;
    }
    server.listen(socketAddress, function () {
        console.log('Socket listening at ' + socketAddress);
    });
});

我尝试echo 'Hello World!' | /tmp/test-socket并获得bash: /tmp/test-socket: No such device or address。但是ls -l /tmp会产生:

srwxr-xr-x 1 jackson jackson 0 Jun 1 01:10 test-socket

请告知我如何让这个套接字回应我写给它的字符串。

1 个答案:

答案 0 :(得分:1)

test-socket不是一个程序。管道运算符(|)尝试将下一个参数(在本例中为test-socket)作为程序或脚本执行,并将输出传递给它的标准输入。

由于套接字(命名管道)本质上是文件,因此您需要使用>>>运算符:

echo 'Hello World!' > /tmp/test-socke

这当然假设您的节点代码正在运行。