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()
并返回结果实例 。