http.createServer(app)诉http.Server(app)

在socket.io网页上, Get Started: Chat application ,位于:

http://socket.io/get-started/chat/

有这样的代码:

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

这样可以更清楚地重写一下:

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

socket.io示例使用http.Server()来创build一个服务器。 然而, app.listen()的快速文档显示了一个使用http.createServer(app)创build服务器的例子:

app.listen()
绑定并监听给定主机和端口上的连接。 此方法与节点的http.Server#listen()相同。

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

express()返回的应用程序实际上是一个JavaScript函数,它被devise成作为callback函数传递给节点的HTTP服务器来处理请求。 这使您可以轻松地为应用程序的HTTP和HTTPS版本提供相同的代码库,因为应用程序不会从这些代码inheritance(这只是一个callback):

 var express = require('express'); var https = require('https'); var http = require('http'); var app = express(); http.createServer(app).listen(80); https.createServer(options, app).listen(443); 

app.listen()方法是以下方便的方法(如果您希望使用HTTPS或同时使用HTTPS,请使用上述技巧):

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

http.createServer(app)http.Server(app)什么区别? http文档没有帮助。

没有区别。 http.createServer()只做一件事情: 在内部调用http.Server()并返回结果实例 。