http.createServer(app)v.http.Server(app)

7st*_*tud 37 node.js express

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

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

有这个代码:

var app = require('express')();
var http = require('http').Server(app);
Run Code Online (Sandbox Code Playgroud)

可以像这样更清楚地重写:

var express = require('express');
var http = require('http');

var app = express();
var server = http.Server(app);
Run Code Online (Sandbox Code Playgroud)

socket.io示例使用http.Server()来创建服务器.然而,app.listen()的快速文档显示了使用http.createServer(app)以下命令创建服务器的示例:

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

var express = require('express');  
var app = express();  
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)

express()返回的应用程序实际上是一个JavaScript函数,旨在作为回调处理请求传递给节点的HTTP服务器.这允许您轻松地为应用程序的HTTP和HTTPS版本提供相同的代码库,因为应用程序不会从这些继承(它只是一个回调):

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);
Run Code Online (Sandbox Code Playgroud)

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

app.listen = function(){
  var server = http.createServer(this);
  return server.listen.apply(server, arguments);
};
Run Code Online (Sandbox Code Playgroud)

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

msc*_*dex 27

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

  • 好的,我更喜欢键入Server()而不是createServer(),这就是我要做的.另外我会保存一个函数调用.谢谢. (2认同)