Express.js-app.listenとserver.listen



Express Js App Listen Vs Server



解決:

2番目の形式(ExpressでHTTPサーバーを作成するのではなく、自分でHTTPサーバーを作成する)は、HTTPサーバーを再利用する場合、たとえば実行する場合に役立ちます。同じHTTPサーバーインスタンス内のsocket.io:

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サーバーをリッスンすることのもう1つの違いは、 httpsサーバー

httpsを設定するには、以下のコードが必要です。



var https = require( 'https'); var server = https.createServer(app).listen(config.port、function(){console.log( 'Httpsアプリが開始されました');});

Expressのアプリはhttpサーバーのみを返します。Expressで設定することはできないため、httpsserverコマンドを使用する必要があります。

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

時間厳守の目的で、少しティムの答えを拡張します。
公式ドキュメントから:

express()によって返されるアプリは、実際にはJavaScript関数です。 合格するように設計されています リクエストを処理するためのコールバックとしてノードのHTTPサーバーに送信します。



これにより、アプリはHTTPバージョンとHTTPSバージョンの両方に同じコードベースを簡単に提供できます。これは、アプリがこれらから継承しないためです(これは単なるコールバックです)。

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

NS app.listen() メソッドはを返します http.Server オブジェクトおよび(HTTPの場合)は 便利な方法 以下について:

app.listen = function(){var server = http.createServer(this); server.listen.apply(server、arguments);を返します。 };