【问题标题】:node.js HTTP request parsing (using net module)node.js HTTP 请求解析(使用 net 模块)
【发布时间】:2011-12-18 01:22:27
【问题描述】:

在 Net node.js 模块之上编写一个 HTTP 简单服务器,而不是使用 HTTP 模块。

我有一个服务器在 localhost:port 监听并打开了一个套接字。

socket.on('data', function(data){
    clientMsg += data;
});

在浏览器中输入地址后,我可以看到 GET 请求在 clientMsg 中。

为了返回我使用的响应:

 socket.on('close', function(){ something response generating here});

但这并不好用,因为它只有在我在浏览器中单击 ESC 或 STOP 时才会发送响应。

所以问题是,我如何知道浏览器完成发送消息并等待响应,而不关闭连接?

【问题讨论】:

    标签: http node.js response


    【解决方案1】:

    您将使用事件连接而不是关闭。 Event: 'connection'

    此外,这是为此类服务器记录的结构:

    var net = require('net');
    var server = net.createServer(function(c) { //'connection' listener
        console.log('server connected');
        c.on('end', function() {
            console.log('server disconnected');
        });
        c.write('hello\r\n');
        c.pipe(c);
    });
    server.listen(8124, function() { //'listening' listener
        console.log('server bound');
    });
    

    【讨论】:

    • 感谢回复,我也看到了,看不懂,c.pipe部分,是不是在对方完成流式传输数据后才发送输入?此外,当我在 Firefox 中连接到 127.0.0.1:8124 时,它确实显示了 HTTP 请求,但似乎 Firefox 仍在尝试检索数据
    • c.write('hello\r\n');通过套接字发送你好。管道有点不同nodejs.org/docs/v0.6.6/api/all.html#stream.pipe
    • 好的,我正在测试管道方法,一旦我完全理解这是答案,我会接受,谢谢。
    猜你喜欢
    • 2018-01-05
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    相关资源
    最近更新 更多