“data”和“end”事件如何从cURL发送到nodejs的HTTP服务器?

这段代码来自《Nodejs in Action》一书:


var http = require('http');

var url = require('url');

var items = [];


var server = http.createServer(function(req, res)

            {

                switch (req.method) 

                {

                case 'POST':

                    var item = '';

                    req.setEncoding('utf8');

                    req.on('data', function(chunk)

                        {

                            item += chunk;

                        });

                    req.on('end', function()

                        {

                            items.push(item);

                            res.end('OK\n');

                        });

                    break;

                    

                case 'GET':

                    items.forEach(function(item, i){

                              res.write(i + ') ' + item + '\n');

                            });

                            res.end();

                    break;

                }

            });

.on充当插槽并等待事件。在本例中,事件是“数据”和“结束”。

cURL 用于向服务器发送请求。


他们使用以下命令来发送请求:


$ curl -d 'buy groceries' http://localhost:3000

OK

$ curl -d 'buy node in action' http://localhost:3000

OK

我的问题是 - 这些事件从哪里发送/触发?

我没有看到任何代码发出“数据”和“结束”事件。


狐的传说
浏览 67回答 1
1回答

拉风的咖菲猫

cURL 不发送事件。cURL 发出 HTTP 请求。当来自 HTTP 请求的数据到达以及 HTTP 请求完成时,这些事件由 Node.js 内部代码生成。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript