Javascript 在节点中何时调用res.on(end)

Javascript 在节点中何时调用res.on(end),javascript,node.js,coffeescript,Javascript,Node.js,Coffeescript,我有以下相当简单的代码(在coffeescript中): 我的印象是,一旦请求完成,就会调用res.on'end',然而每当我执行代码时,就会多次调用回调。有什么帮助吗?所以,我在这里遇到的问题不是res.on('end')被多次调用,而是我发出了多个请求,因为对服务器的每个请求都是通过这个循环处理的。因此,当它尝试加载favicon时,它将再次经历整个过程,当它尝试加载任何css文件或我正在“代理”的文件的html中包含的任何其他内容时,它将再次经历该部分的过程 看看这个例子,我认为它将有助于

我有以下相当简单的代码(在coffeescript中):


我的印象是,一旦请求完成,就会调用res.on'end',然而每当我执行代码时,就会多次调用回调。有什么帮助吗?

所以,我在这里遇到的问题不是
res.on('end')
被多次调用,而是我发出了多个请求,因为对服务器的每个请求都是通过这个循环处理的。因此,当它尝试加载favicon时,它将再次经历整个过程,当它尝试加载任何css文件或我正在“代理”的文件的html中包含的任何其他内容时,它将再次经历该部分的过程

看看这个例子,我认为它将有助于澄清代码中发生了什么。点击这两个URL localhost:8888和localhost:9999

http = require 'http'
somePortNum = 9999
options =
    hostname: 'localhost'
    port: somePortNum,
    path: '/'

proxyServer = http.createServer  (request, response) ->
  response.writeHead 200, 'text/html'
  response.write 'This server is a proxy server, we will make a request to the server on localhost:9999 and post the response below:\n'
  req = http.get options, (res) ->
    res.on 'data', (data) ->
      response.write data
    res.on 'end', () ->
      response.end()

proxyServer.listen 8888

server2 = http.createServer  (request, response) ->

  response.writeHead 200, 'text/html'
  response.write 'This is a very simple server, it just says hello world'
  response.end()

server2.listen somePortNum

当http.get(res)完成接收数据时,将调用res.end事件。您确定不仅仅是代理多个请求吗?您是否打算编写代理服务器?您的响应不是基于请求对象。。。这台服务器所做的一切就是每次都用somewebsite.com/上的数据进行响应……我并不打算编写代理服务器,我只是想找到绕过node.js的方法。我认为我现在遇到的问题仅仅是web浏览器向服务器发送多个请求(例如一个用于favicon)。这就是node.js的基本设计方式。有各种各样的框架可以简化编写Web服务器和路由请求。我个人喜欢,并推荐它。
http = require 'http'
somePortNum = 9999
options =
    hostname: 'localhost'
    port: somePortNum,
    path: '/'

proxyServer = http.createServer  (request, response) ->
  response.writeHead 200, 'text/html'
  response.write 'This server is a proxy server, we will make a request to the server on localhost:9999 and post the response below:\n'
  req = http.get options, (res) ->
    res.on 'data', (data) ->
      response.write data
    res.on 'end', () ->
      response.end()

proxyServer.listen 8888

server2 = http.createServer  (request, response) ->

  response.writeHead 200, 'text/html'
  response.write 'This is a very simple server, it just says hello world'
  response.end()

server2.listen somePortNum