在 node.js 中构建 socket.io/express 应用程序时是不是需要 http?

Posted

技术标签:

【中文标题】在 node.js 中构建 socket.io/express 应用程序时是不是需要 http?【英文标题】:In node.js do I need http when building a socket.io/express app?在 node.js 中构建 socket.io/express 应用程序时是否需要 http? 【发布时间】:2016-09-04 01:00:42 【问题描述】:

我刚刚开始使用 node.js,我可以构建一个简单的应用程序来响应请求并使用 express 框架进行一些基本的路由。

我希望使用 socket.io 创建一些东西,但我对使用“http”模块有点困惑。我了解 http 是什么,但我似乎不需要它来执行以下操作:

var express = require('express');
var app = express();

app.get('/', function (req, res) 
  res.sendFile(__dirname + '/index.htm');
);

app.listen(3000, function () 
  console.log('Example app listening on port 3000!');
);

我可以通过 http 提供 html 页面,而无需明确要求 http 模块,例如:

var http = require('http');

如果我使用 express,我对 http 模块有什么用吗?

【问题讨论】:

【参考方案1】:
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 服务器:

var express   = require('express');
var app       = express();
var socketio  = require('socket.io');

// app.use/routes/etc...

var server    = app.listen(3033);
var io        = require('socket.io').listen(server);

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

来源

http://***.com/questions/17696801/express-js-app-listen-vs-server-listen

【讨论】:

【参考方案2】:

不,您可能不需要它。 你可以使用类似的东西:

var app = require('express').createServer();
var io = require('socket.io')(app);

//你的 express 和 socket.io 代码放在这里:

【讨论】:

以上是关于在 node.js 中构建 socket.io/express 应用程序时是不是需要 http?的主要内容,如果未能解决你的问题,请参考以下文章

在 node.js 中构建 socket.io/express 应用程序时是不是需要 http?

在IOS中构建一个使用node.js服务器的聊天应用程序[关闭]

如何在没有客户端的情况下使用 facebook 的护照在 node.js 中构建 REST 服务?

浅谈构建前端自动化工作流程一 之 node

使用 Axios 在 Node.js 中克服 Pending Promise 并完成构建 JSON

使用 Node.js 构建网站的最佳实践