在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文档没有帮助。
答案 0 :(得分:26)
没有区别。 http.createServer()
只做一件事:it calls http.Server()
internally and returns the resulting instance。