express和socket.io-声明和启动服务器 [英] express and socket.io - declaration and starting server

查看:46
本文介绍了express和socket.io-声明和启动服务器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从不了解以下代码是如何等效的:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆