expressjs的socket.io设置

时间:2016-08-19 14:38:02

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

我只是尝试使用' 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. 要求(' http')。服务器(app)=>为什么我需要将app作为Server的参数?
  2. 为什么我必须使用server.listen()而不是app.listen()?
  3. 我查看了node.js和express.js的文档,但无法理解......

    我非常感谢你的全面解释......

1 个答案:

答案 0 :(得分:5)

您的原始代码正在使用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的参数传递的原因是,Express应用程序优先于典型http请求的套接字服务器。