这可能是一个非常基本的问题,但我根本不明白。 使用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
socket.io如果您想重用 HTTP 服务器,例如在同一个 HTTP 服务器实例中运行,则第二种形式(自己创建一个 HTTP 服务器,而不是让 Express 为您创建一个)很有用:
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) { ... });