0

私は次のかなり単純なコードを持っています(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

リクエストが完了すると res.on 'end' が呼び出されるという印象を受けましたが、コードを実行するたびにコールバックが複数回呼び出されます。何か助けはありますか?

4

2 に答える 2

0

したがって、ここで遭遇した問題は、res.on('end')複数回呼び出されたということではなく、サーバーへのすべての要求がこのループを介して処理されているため、複数の要求を行っていたことです。そのため、ファビコンをロードしようとすると、プロセス全体が再度実行され、css ファイルまたは「プロキシ」していたファイルの html に含まれるその他のものをロードしようとすると、プロセスが再度実行されます。その部分。

于 2013-08-19T14:08:20.040 に答える
0

ここでこの例をチェックしてください。コードで何が起こっているのかを明確にするのに役立つと思います. localhost:8888 と localhost:9999 の 2 つの URL にアクセスします。

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
于 2013-08-19T14:15:18.963 に答える