Programing

Express.js-app.listen 및 server.listen

lottogame 2020. 2. 27. 22:03
반응형

Express.js-app.listen 및 server.listen


이것은 매우 기본적인 질문 일 수는 있지만 간단하게 알 수는 없습니다. Express.js를 사용하여 앱을 만들고 포트 1234에서 수신 대기하는 앱을 시작 하는 것의 차이점은 다음 과 같습니다.

var express = require('express');
var app = express();

//app.configure, app.use etc

app.listen(1234);

http 서버 추가 :

var express = require('express');
var http = require('http');

var app = express();
var server = http.createServer(app);

//app.configure, app.use etc

server.listen(1234);

차이점이 뭐야?
로 이동 http://localhost:1234하면 동일한 출력을 얻습니다.


두 번째 양식 (Express에서 직접 작성하지 않고 직접 HTTP 서버 작성)은 HTTP 서버를 재사용하려는 경우 ( socket.io예 : 동일한 HTTP 서버 인스턴스 내에서 실행) 유용 합니다.

var express = require('express');
var app     = express();
var server  = require('http').createServer(app);
var io      = require('socket.io').listen(server);
...
server.listen(1234);

그러나 app.listen()HTTP 서버 인스턴스도 반환하므로 약간만 다시 작성하면 HTTP 서버를 직접 만들지 않고도 비슷한 결과를 얻을 수 있습니다.

var express   = require('express');
var app       = express();

// app.use/routes/etc...

var server    = app.listen(3033);
var io        = require('socket.io').listen(server);

io.sockets.on('connection', function (socket) {
  ...
});

https 서버를 설정하려는 경우 앱을 사용하고 http 서버를 듣는 것의 차이점이 하나 더 있습니다.

https를 설정하려면 아래 코드가 필요합니다.

var https = require('https');
var server = https.createServer(app).listen(config.port, function() {
    console.log('Https App started');
});

express의 앱은 http 서버 만 반환하므로 명시 적으로 설정할 수 없으므로 https server 명령을 사용해야합니다.

var express = require('express');
var app = express();
app.listen(1234);

시간 엄수를 위해 약간의 Tim 답변을 확장하십시오.
에서 공식 문서 :

express ()에 의해 반환 된 앱은 실제로 요청을 처리하기위한 콜백으로 Node의 HTTP 서버에 전달되도록 설계된 JavaScript 함수 입니다.

이렇게하면 앱이 이들로부터 상속받지 않기 때문에 동일한 코드 기반으로 앱의 HTTP 및 HTTPS 버전을 모두 쉽게 제공 할 수 있습니다 (단순히 콜백 임).

http.createServer(app).listen(80);
https.createServer(options, app).listen(443);

app.listen () 메소드가 다시 표시 http.Server 객체와 (대한 HTTP)은 인 간이 메소드 다음에 :

app.listen = function() {
  var server = http.createServer(this);
  return server.listen.apply(server, arguments);
};

Express는 기본적으로 개발자의 편의를 위해 만들어진 http 모듈의 래퍼입니다.

  1. Express를 사용하여 HTTP 요청에 쉽게 응답하도록 미들웨어를 설정할 수 있습니다.
  2. Express를 사용하여 인수를 템플리트에 전달하여 HTML 페이지를 동적으로 렌더링 할 수 있습니다.
  3. 또한 express를 사용하여 라우팅을 쉽게 정의 할 수 있습니다.

나는 같은 질문을했지만 Google 후에 큰 차이가 없다는 것을 알았습니다. :)

에서 Github에서

HTTP 및 HTTPS 서버를 모두 작성하려면 여기에 표시된대로 "http"및 "https"모듈을 사용하십시오.

/**
 * Listen for connections.
 *
 * A node `http.Server` is returned, with this
 * application (which is a `Function`) as its
 * callback. If you wish to create both an HTTP
 * and HTTPS server you may do so with the "http"
 * and "https" modules as shown here:
 *
 *    var http = require('http')
 *      , https = require('https')
 *      , express = require('express')
 *      , app = express();
 *
 *    http.createServer(app).listen(80);
 *    https.createServer({ ... }, app).listen(443);
 *
 * @return {http.Server}
 * @api public
 */

app.listen = function(){
  var server = http.createServer(this);
  return server.listen.apply(server, arguments);
};

또한 socket.io로 작업하려면 예제를 참조하십시오.

참조

나는 선호한다 app.listen():)

참고 URL : https://stackoverflow.com/questions/17696801/express-js-app-listen-vs-server-listen



반응형