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

时间:2014-11-14 00:39:53

标签: 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);

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

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

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

socket.io示例使用http.Server()创建服务器。然而,app.listen()的明确文档显示了使用http.createServer(app)创建服务器的示例:

  

app.listen()
  绑定并侦听给定主机和端口上的连接。这个   method与node的http.Server#listen()。

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

express()返回的app实际上是一个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);
     

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文档没有帮助。

1 个答案:

答案 0 :(得分:26)

没有区别。 http.createServer()只做一件事:it calls http.Server() internally and returns the resulting instance