这可能是一个非常基本的问题,但我根本不理解。使用 Express.js 创建应用程序和在端口1234上启动应用程序侦听之间有什么区别,例如:
var express = require('express'); var app = express(); //app.configure, app.use etc app.listen(1234);
并添加http服务器:
var express = require('express'); var http = require('http'); var app = express(); var server = http.createServer(app); //app.configure, app.use etc server.listen(1234);
有什么不同? 如果导航到http://localhost:1234,则得到相同的输出。
http://localhost:1234
第二种形式(您自己创建一个HTTP服务器,而不是让Express为您自己创建一个HTTP服务器)在您想重用HTTP服务器(例如socket.io在同一个HTTP服务器实例中运行)时非常有用:
socket.io
var express = require('express'); var app = express(); var server = require('http').createServer(app); var io = require('socket.io').listen(server); ... server.listen(1234);
但是,app.listen()还会返回HTTP服务器实例,因此,只需进行一些重写,您就可以实现类似的操作,而无需自己创建HTTP服务器:
app.listen()
var express = require('express'); var app = express(); // app.use/routes/etc... var server = app.listen(3033); var io = require('socket.io').listen(server); io.sockets.on('connection', function (socket) { ... });