2015-04-25 9 views
21

Non riesco a capire la differenza tra net.createserver e http.createserver in node.js.http.createserver vs net.createserver in node.js

Ho letto la documentazione per entrambi i metodi situati in queste due URL https://nodejs.org/api/net.html#/net_net, https://nodejs.org/api/http.html#/http_class_http_server.

Capisco che http.createserver crea un server http. Tuttavia, la documentazione dice che net.createserver crea un server TCP. Capisco che tcp è il protocollo di trasmissione su cui si trova l'http e che i server http sono impostati per leggere le intestazioni delle richieste http. Capisco anche abbastanza bene il concetto di emettitori pari in node.js. Tuttavia, non capisco questa nozione di un server TCP e perché uno dovrebbe essere fatto in node.js. Il contesto è che sto codificando un esempio di applicazione di chat nel libro "node.js in action".

risposta

25

http.createServer() imposta un server che gestisce il protocollo HTTP, che viene effettivamente trasmesso su TCP. net.createServer() crea un server che capisce semplicemente quando è avvenuta una connessione TCP, i dati sono stati trasmessi e così via, ma non sa nulla se è stata ricevuta una richiesta HTTP valida, ecc.

Se si sta scrivendo un server web, preferire http.createServer() su net.createServer() in quanto consente di risparmiare un sacco di lavoro. Se stai scrivendo un altro tipo di server, non utilizzare http.createServer().

+0

Grazie, ho avuto la sensazione che net.createserver() era un costruttore più generale, tuttavia non ero sicuro. –

+0

Bella risposta, grazie. –

10

Non conosco molto Node.js, ma so qualcosa sulle reti. HTTP è un protocollo che funziona sul settimo livello (Application) del modello OSI. TCP è un protocollo che funziona sul 4 ° livello (di trasporto) del modello OSI. Come hai detto, sì, l'HTTP funziona sulla parte superiore del TCP. L'opzione di creare server HTTP entro il http.createServer() è così che non devi implementarla da solo usando net.createServer(). Il protocollo TCP potrebbe essere utilizzato da molte applicazioni, è possibile crearne di propri o implementare un protocollo diverso da HTTP, ad esempio: FTP, DNS, SMTP, Telnet e molto altro.