【问题标题】: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 模块有什么用吗?

【问题讨论】:

    标签: javascript node.js


    【解决方案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://stackoverflow.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 代码放在这里:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多