首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于快递服务器和nodejs http服务器的混淆

关于快递服务器和nodejs http服务器的混淆
EN

Stack Overflow用户
提问于 2017-06-27 13:19:39
回答 1查看 986关注 0票数 3

我正在学习redis,在docs中,它们有以下服务器设置:

代码语言:javascript
复制
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);

server.listen(80);

app.get('/', function (req, res) {
  res.sendfile(__dirname + '/index.html');
});

io.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
  socket.on('my other event', function (data) {
    console.log(data);
  });
});

正如您所看到的,他们在第一行上创建了express服务器,这是我通常所做的,但随后他们将express传递给server = require(' http '),我猜测它是http服务器的一个节点模块。

我通常会做这样的事情:

代码语言:javascript
复制
const express = require('express')
const routes = require('./routes')

api.use('/', routes)

// Fireup up API server
api.listen(9090, () => {
  debug('API server listening on port 9090...')
})

在第一个示例中,为什么要将express传递给nodejs http模块?

编辑我知道行var server = require('http').Server(app)是为了以后我们可以使用var io = require('socket.io')(server);将服务器传递给socket.io我不明白的是:是什么'http‘模块?它是从哪里来的?它与快递服务器有何不同?

我提供的第二个示例来自一个api后端服务器,该服务器使用api前缀进行调用,这就是为什么它有'/api',我之所以将它包括进来只是为了演示我通常是如何设置服务器的,并表明在这个过程中我没有使用。

Edit2一个基于答案和评论的附加问题。为什么我们需要额外的一步才能将服务器传递给socket.io,而不仅仅是直接传递快速服务器?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-27 13:38:18

第一个是将Express应用程序挂载到一个新的HTTP实例,该实例也在使用Socket.io侦听套接字连接。这是创建一个运行Socket.io的快速服务器的方法之一。

下面是具有与示例代码相同的快捷和HTTP模块使用情况的文档

HTTP模块是node的一部分,所以它只是节点的一部分。您可以在节点应用程序中的任何时候都需要它。Express是使用http模块构建的,并封装了http.Server。所以HTTP和Express是不同的,因为Express构建在http.Server类之上,并添加了中间件、视图引擎等内容。

如果您不需要socket.io部分,那么就可以去掉它,就像在第二个代码示例中一样。但是,不确定api表达式实例从哪个片段中来。

代码语言:javascript
复制
const express = require('express')
const routes = require('./routes')
const server = express()
const port = process.env.PORT || 1337

server.get('/', function (req, res) {
  res.sendfile(__dirname + '/index.html');
});

server.use('/api', routes)
server.listen(port, () => { console.log(`Listening on ${port}`) })
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44781368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档