2016-08-19 9 views
0

の設定socket.io私は単に「Socket.io」 初期設定についてを使用しようとした、文書はがexpressjs

var app = require('express')(); 
var server = require('http').Server(app); 
var io = require('socket.io')(server); 

server.listen(80); 

以下のコードを言うと、これは私の元のコードです。

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

2つの違いは何ですか? 特に2つの質問。

  1. require( 'http')。サーバー(app)=>なぜアプリケーションをサーバーの引数として配置する必要がありますか?
  2. なぜ私はapp.listen()の代わりにserver.listen()を使用する必要がありますか?

私はあなたの元...私は本当にあなたの完全な説明については理解されるであろう

...

答えて

5

をNode.jsのとexpress.jsの文書を見上げたが、理解することはできませんコードはExpressを使用してHTTPサーバーを作成しています。それは、本質的にするための便利なメソッドですので、それはまた、サーバインスタンスを返しているので、あなたが)(app.listen行うことができます理由は次のとおりです。

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

あなたの例では、初期設定で速記用:

var http = require('http'); 
var server = http.createServer(); 
var express = require('express'); 
var app = express(); 
var socketio = require('socket.io'); 
server.on('request', app); 
var io = socketio(server); 

server.listen(80); 

この例では、Webソケット用の新しい接続サーバーを作成し、HTTPサーバーに直接統合します。サーバーの引数としてappを渡す理由は、エクスプレスアプリケーションが一般的なhttp要求のソケットサーバーよりも優先されるためです。

+0

ありがとうございます。 – Kwang