我想使用nodejs在socket上编写同步readSync。 irc上有人告诉我这是不可能的。 但是nodejs提供了setNoDelay(false),socket.pause()和socket.resume(),允许我在阻塞模式下使用socket fd。
这是一个例子:
client.on('connect', function() {
client.setNoDelay(false);
});
[...]
var b = new Buffer(10240);
client.pause();
fs.writeSync(client._handle.fd, JSON.stringify(req)+'\n');
var r = fs.readSync(client._handle.fd, b, null, b.length);
client.resume();
在这个例子中,我在读取时获得了EGAIN,在写入时获得了EPIPE。