【问题标题】:socket.io setting for expressjsexpressjs 的 socket.io 设置
【发布时间】:2016-12-26 18:36:24
【问题描述】:

我只是尝试使用“Socket.io” 对于初始设置,文档说下面的代码

var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);

server.listen(80);

这是我的原始代码。

var app = require('express')();
app.listen(80);

两者有什么区别? 具体2个问题。

  1. require('http').Server(app) => 为什么我需要把 app 作为 Server 的参数?
  2. 为什么我必须使用 server.listen() 而不是 app.listen() ??

查了node.js和express.js的文档,看不懂……

非常感谢您的完整解释...

【问题讨论】:

    标签: node.js http express socket.io server


    【解决方案1】:

    您的原始代码使用 Express 为您创建 HTTP 服务器。你可以做 app.listen() 的原因是因为它也返回服务器实例,所以它本质上是一个方便的方法:

    app.listen = function() {
      var server = http.createServer(this);
      return server.listen.apply(server, arguments);
    }; 
    

    您示例中的初始设置是:

    var http = require('http');
    var server = http.createServer();
    var express = require('express');
    var app = express();
    var socketio = require('socket.io'); 
    server.on('request', app);
    var io = socketio(server); 
    
    server.listen(80);
    

    在此示例中,您将为 Web 套接字创建一个新的连接服务器,并将它自己集成到 http 服务器中。您将 app 作为 Server 的参数传递的原因是,对于典型的 http 请求,快速应用程序优先于套接字服务器。

    【讨论】:

    • 感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-16
    • 2017-08-09
    • 2020-11-10
    • 2012-08-18
    相关资源
    最近更新 更多