Express.js - app.listen vs 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 서버를 직접 작성)은 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) {
...
});
앱을 사용하는 것과 http 서버를 듣는 것의 또 다른 차이점은 https 서버를 설정하고 싶을 때입니다.
https를 설정하려면 아래 코드가 필요합니다.
var https = require('https');
var server = https.createServer(app).listen(config.port, function() {
console.log('Https App started');
});
express의 앱은 http 서버만 반환하므로 express로 설정할 수 없으므로 https server 명령을 사용해야 합니다.
var express = require('express');
var app = express();
app.listen(1234);
시간 엄수를 위해 팀의 답변을 조금 연장합니다.
공식 문서에서:
express()에서 반환한 앱은 사실 요청을 처리하기 위한 콜백으로 Node의 HTTP 서버에 전달되도록 설계된 JavaScript 함수입니다.
이를 통해 HTTP 및 HTTPS 버전의 앱을 모두 동일한 코드 기반으로 쉽게 제공할 수 있습니다(단순한 콜백).
var https =require('https');
var http = require('http');
http.createServer(app).listen(80);
https.createServer(options, app).listen(443);
app.listen() 메서드는 http를 반환합니다.서버 개체 및 (HTTP용)은 다음에 대한 편리한 방법입니다.
app.listen = function() {
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
같은 질문으로 왔는데 구글 검색 결과 큰 차이가 없습니다 :)
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()
:)
Express는 기본적으로 개발자의 편의를 위해 만들어진 http 모듈의 래퍼입니다.
- 이들은 익스프레스를 사용하여 HTTP 요청에 응답하도록 미들웨어를 설정할 수 있습니다.
- 그들은 express를 사용하여 템플릿에 인수를 전달하는 것을 기반으로 HTML 페이지를 동적으로 렌더링할 수 있습니다.
- 또한 익스프레스를 사용하여 라우팅을 쉽게 정의할 수 있습니다.
언급URL : https://stackoverflow.com/questions/17696801/express-js-app-listen-vs-server-listen
'programing' 카테고리의 다른 글
콘솔에 대한 vbscript 출력 (0) | 2023.05.22 |
---|---|
정기 작업 실행 (0) | 2023.05.22 |
로컬에 Azure WebJobsStorage 값이 없습니다.settings.json Visual Studio 2017의 로컬 개발 (0) | 2023.05.22 |
Pip 또는 Pip3를 사용하여 Python 3용 패키지를 설치하시겠습니까? (0) | 2023.05.22 |
Git - 잘못된 분기 작업 - 기존 항목 분기에 변경사항을 복사하는 방법 (0) | 2023.05.22 |