Socket.io 和快递 4

Socket.io and Express 4

我正在使用 node.js、express 4 和 socket.io(最新版本)构建一个简单的网络应用程序。

我的问题是 socket.io(来自他们的网站)的提议语法与我从 express 获得的语法不一致。

这是包含所有内容并开始使用的 socket.io 方法:

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

问题是我使用 express-generator 自动生成了一个项目,我的代码开头如下所示:

var express = require('express'),
        path = require('path'),
        favicon = require('serve-favicon'),
        logger = require('morgan'),
        cookieParser = require('cookie-parser'),
        bodyParser = require('body-parser'),
        request = require('request');

var routes = require('./routes/index'),
        users = require('./routes/users');

var app = express();

此外,这是我的 'bin/www' 文件:

#!/usr/bin/env node
var debug = require('debug')('ase');
var app = require('../app');

app.set('port', process.env.PORT || 3000);

var server = app.listen(app.get('port'), function() {
  debug('Express server listening on port ' + server.address().port);
});

我似乎没有找到对 'http' 包的任何引用,运行 socket.io 似乎依赖于它。

在 express 4 项目中包含和使用 socket.io 的正确方法是什么?

作为附带问题,我应该如何构建我的代码?也就是说,我应该将我所有的 socket.io 逻辑包含在 app.js 中(我认为不是)还是我应该制作另一个文件并 link 它?

有什么想法吗?

对于你的前两个问题,我相信这个 post 会帮助你 Using socket.io in Express 4 and express-generator's /bin/www

至于你最后一个问题,你应该把相关的socket.io逻辑放在文件中需要的地方。它绝对不应该全部存储在一个地方。在 chat example of socket.io 中,您会注意到它们将 socket.io 逻辑与发送消息时和接收消息时分开。