繁体   English   中英

express.js的socket.io设置

[英]socket.io setting for expressjs

我只是尝试使用“ 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的文档,但听不懂...

非常感谢您的全面解释...

您的原始代码正在使用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请求,express app优先于套接字服务器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM