2

node-tail を使用して Linux でファイルを読み取り、ソケットに送信しています。

テキストファイルから読み取ったデータを送信するnode.js

var io = require('socket.io');
Tail = require('tail').Tail;


tail = new Tail("/tmp/test.txt");


io.sockets.on('connection', function (socket) {

tail.on("line", function(data) {
  socket.emit('Message', { test: data });

});

});

受信側

var socket = io.connect();
  socket.on('Message', function (data) {

    console.log(data.test);

  });

これは機能しますが、この部分を変更しようとすると

tail = new Tail("/tmp/test.txt");

これに

tail = new Tail("/tmp/FIFOFILE");

そこからデータを取得できません。

Linuxで名前付きパイプを読み取る方法はありますか? または名前付きパイプを読み取ることができるパッケージ?

4

2 に答える 2

4

私はそれをばかげた方法で動作させることができます:

// app.js
process.stdin.resume();
process.stdin.on('data', function(chunk) {
 console.log('D', chunk);
});

そして、次のように開始します。

node app.js < /tmp/FIFOFILE

名前付きパイプの読み取り可能なストリームを作成すると、名前付きパイプに書き込まれた最初のデータを読み取った後に終了します。なぜstdin特別なのかわからない。

于 2013-05-22T15:03:38.137 に答える