http.createServer express.createServer有区别吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http.createServer express.createServer有区别吗相关的知识,希望对你有一定的参考价值。

参考技术A var express = require('express'),
path = require('path'),
http = require('http'),
io = require('socket.io'),
wine = require('./routes/wines');

var app = express();

app.configure(function ()
app.set('port', process.env.PORT || 3000);
app.use(express.logger('dev'));
app.use(express.bodyParser())
app.use(express.static(path.join(__dirname, 'public')));
);

var server = http.createServer(app);
io = io.listen(server);

io.configure(function ()
io.set('authorization', function (handshakeData, callback)
if (handshakeData.xdomain)
callback('Cross-domain connections are not allowed');
else
callback(null, true);

);
);

server.listen(app.get('port'), function ()
console.log("Express server listening on port " + app.get('port'));
);

app.get('/wines', wine.findAll);
app.get('/wines/:id', wine.findById);
app.post('/wines', wine.addWine);
app.put('/wines/:id', wine.updateWine);
app.delete('/wines/:id', wine.deleteWine);

io.sockets.on('connection', function (socket)

socket.on('message', function (message)
console.log("Got message: " + message);
ip = socket.handshake.address.address;
url = message;
io.sockets.emit('pageview', 'connections': Object.keys(io.connected).length, 'ip': '***.***.***.' + ip.substring(ip.lastIndexOf('.') + 1), 'url': url, 'xdomain': socket.handshake.xdomain, 'timestamp': new Date());
);

socket.on('disconnect', function ()
console.log("Socket disconnected");
io.sockets.emit('pageview', 'connections': Object.keys(io.connected).length);
);

);

这是一个例子,我没细看,你可以参考本回答被提问者采纳

用 http.createServer 或 app = express() 调用 express 有啥区别?

【中文标题】用 http.createServer 或 app = express() 调用 express 有啥区别?【英文标题】:What's the difference between calling express with http.createServer or app = express()?用 http.createServer 或 app = express() 调用 express 有什么区别? 【发布时间】:2018-06-01 01:56:27 【问题描述】:

我正在学习 express,我已经看到了 2 种不同的创建服务器的方法。只是好奇这两种方法有什么区别。这是一个在大多数教程中完成的快速服务器:

var express = require('express');
var app = express();
app.listen(3000, function () 
    console.log('Example app listening on port 3000.');
);

我发现的第二种方法是使用 http 服务器。

var express = require('express');
var app = express();
var http = require('http');
var httpServer = http.createServer(app);
httpServer.listen(3000);

为什么以及何时我会使用其中一个而不是另一个?有很大的不同吗? 谢谢你

【问题讨论】:

Express.js - app.listen vs server.listen的可能重复 【参考方案1】:

差异的原因是有时您想创建多个 Express 实例来进行路由,并且应该只有其中一个在监听。然而,在最微不足道的情况下,并没有明显的区别。

请务必记住,Express 和 HTTP 服务器是两个完全不同的东西。诀窍是app.listen 会自动为你实例化一个服务器,否则你必须自己做。

【讨论】:

以上是关于http.createServer express.createServer有区别吗的主要内容,如果未能解决你的问题,请参考以下文章

expressjs // module.exports 与 http.createServer [重复]

Express 应用程序作为 http.createServer 的参数

Node.js http.createServer 简单服务配置

node.js createserver获取请求值

用 http.createServer 或 app = express() 调用 express 有啥区别?

node http server源码解析