0

抱歉,如果我问愚蠢的问题,我正在使用下面关于 nodejs 长轮询的示例。 http://www.stoimen.com/blog/2010/12/02/diving-into-node-js-a-long-polling-example/

我了解其中的大部分内容,但尽管我已经进行了数千次搜索,但我不太能够理解的一件事。

fs.stat('filepath', function(err, stats) {
    // if the file is changed
    if (stats.mtime.getTime() > request.socket._idleStart.getTime()) {
        // read it
        fs.readFile('filepath', 'utf8', function(err, data) {
            // return the contents
            response.writeHead(200, {
                'Content-Type'   : 'text/plain',
                'Access-Control-Allow-Origin' : '*'
            });

            // return response
            response.write(data, 'utf8');
            response.end();

            // return
            return false;
        });
    }
});

“request.socket._idleStart”部分,参数_idleStart是什么意思?实际上,我尝试打印出整个请求对象并获得以下参数。

_readableState: 
   { highWaterMark: 16384,
     buffer: [],
     length: 0,
     pipes: null,
     pipesCount: 0,
     flowing: false,
     ended: false,
     endEmitted: false,
     reading: false,
     calledRead: false,
     sync: true,
     needReadable: false,
     emittedReadable: false,
     readableListening: false,
     objectMode: false,
     defaultEncoding: 'utf8',
     ranOut: false,
     awaitDrain: 0,
     readingMore: false,
     decoder: null,
     encoding: null },
  readable: true,
  domain: null,
  _events: {},
  _maxListeners: 10,
  socket: 
....
...
...

我想知道是否有任何描述这些参数的文档,谢谢大家的帮助!

4

1 回答 1

1

那些带_下划线的参数,用于维护套接字的状态,并不意味着与它们一起工作。有些功能比那些功能更可靠。

来自 node.js 文档

可读._read

注意:不应直接调用此函数。它应该由子类实现,并且只能由内部 Readable 类方法调用。

所有可读流实现都必须提供一个 _read 方法来从底层资源中获取数据。

此方法带有下划线前缀,因为它在定义它的类内部,不应由用户程序直接调用。但是,您应该在自己的扩展类中覆盖此方法。

于 2013-11-07T12:52:18.247 回答