express和socket.io - 声明和启动服务器

时间:2014-09-08 13:45:29

标签: node.js express socket.io middleware

我从未理解以下代码是如何相同的:

代码1:

var app = require("express")();
var server = require('http').Server(app);
var io = require('socket.io').listen(server);
...
io.use(...);
...
server.listen(3000, function(){});

代码2:

var app = require("express")().listen(3000);
var io = require("socket.io")(app);
...
io.use(...);

代码3:

var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);
...
io.use(...);
...
server.listen(3000, function(){});

你能帮我理解这里发生了什么吗?并且一种方法优于另一种方法(以及在什么情况下)?感谢。

1 个答案:

答案 0 :(得分:0)

这些片段并不相同。有些是旧版本的express和socket.io,有些是较新版本。我会使用socket.io documentation中的修改示例。

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

/* Setup Express */
app.get('/', function (req, res) {
  ...
});

/* Setup Socket.io */
io.on('connection', function (socket) {
  ...
});

server.listen(3000);

Express现在只公开一个传递给http服务器的处理函数app。 Socket.io希望你传递一个http服务器来插入它。