2016-08-19 4 views
0

Ich habe gerade versucht Für die anfängliche Einstellung ‚Socket.io‘ zu verwenden, Dokument sagt der folgende Codesocket.io für Express.js Einstellung

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

server.listen(80); 

und das ist mein Original-Code.

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

Was ist der Unterschied zwischen zwei? Speziell 2 Fragen.

  1. erfordern ('http'). Server (APP) => Warum muss ich App als Argument von Server setzen?
  2. Warum muss ich server.listen() anstelle von app.listen() ??

Ich sah das Dokument von node.js und Express.js, kann aber nicht verstehen ...

Ich werde wirklich für Ihre vollständige Erklärung klar sein ...

Antwort

5

Ihre Original Code verwendet Express, um den HTTP-Server für Sie zu erstellen. Der Grund, warum Sie tun app.listen können(), weil es auch die Server-Instanz zurückkehr so ​​dass es im Wesentlichen eine bequeme Methode ist für:

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

Die Anfangseinstellung in Ihrem Beispiel ist eine Abkürzung für:

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); 

In diesem Beispiel erstellen Sie einen neuen Verbindungsserver für Web-Sockets und integrieren ihn selbst in den HTTP-Server. Der Grund dafür, dass Sie app als Argument von Server übergeben, besteht darin, dass die Express-Anwendung für typische http-Anforderungen Vorrang vor dem Socket-Server hat.

+0

Vielen Dank für Ihre Hilfe. – Kwang

Verwandte Themen