簡體   English   中英

節點何時調用res.on(end)

[英]When is res.on(end) called in node

我有以下相當簡單的代碼(在coffeescript中):

http = require 'http'

options =
  hostname: 'somewebsite.com'
  port: 80,
  path: '/'

server = http.createServer  (request, response) ->
  response.writeHead 200, 'text/html'
  req = http.get options, (res) ->
    res.on 'data', (data) -> 
      console.log 'GETTING IT'
      response.write data
    res.on 'end', () ->
      console.log 'GOT IT'
      response.end()

server.listen 80

我的印象是,請求完成后,將在“ end”上調用res.end,但是無論何時執行代碼,都會多次調用回調。 有什么幫助嗎?

所以,我在這里遇到的問題不是res.on('end')被多次調用,而是我在發出多個請求,因為對服務器的每個請求都通過此循環處理。 因此,當它嘗試加載favicon時,它將再次經歷整個過程,並且當它試圖加載任何css文件或文件的html中包含的其他任何內容時,如果我正在“代理”,它將再次經歷該過程那部分。

在這里檢查該示例,我認為這將有助於弄清代碼中的情況。 命中這兩個網址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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM