Express和Socket.io - 服务器的声明和启动

3
我從未理解以下代碼是如何等效的:
代碼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
代码片段并不相等。有些来自较旧版本的express和socket.io,而有些则更为新近。我建议使用修改过的socket.io文档中的示例。
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只是暴露了一个处理函数app,你可以将其传递给一个HTTP服务器。Socket.io希望你将其插入到一个HTTP服务器中。


这个stackoverflow答案https://dev59.com/bGcs5IYBdhLWcg3wJQm8#24859515在最新版本中完美适用。关键是它们都可以工作,但我不清楚为什么。 - Kaya Toast

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接