[英]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.