express和socket.io-声明和启动服务器 [英] express and socket.io - declaration and starting server
问题描述
我从不了解以下代码是如何等效的:
I've never understood how the below codes are equivalent:
代码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(){});
您能帮我了解这里发生了什么吗?并且一种方法比另一种方法更可取(在什么情况下)?谢谢.
Can you please help me understand what is happening here ? And is one approach preferable over the other (and under what circumstances) ? Thanks.
推荐答案
代码段不相同.有些来自旧版本的express和socket.io,有些来自较新的版本.我会使用 socket.io文档中的修改示例.
The snippets are not equivalent. Some are from older versions of express and socket.io and some are more recent. I would use a modified example from the 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现在仅公开处理程序函数app
,您将其传递给http服务器. Socket.io希望您将其传递给http服务器以供其插入.
Express now just exposes a handler function app
which you pass to an http server. Socket.io expects you to pass it an http server for it to plug into.
这篇关于express和socket.io-声明和启动服务器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!