Socket.io 和 Express 4

Posted

技术标签:

【中文标题】Socket.io 和 Express 4【英文标题】:Socket.io and Express 4 【发布时间】:2015-02-28 16:37:43 【问题描述】:

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

我的问题是 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 的正确方法是什么?

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

有什么想法吗?

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于Socket.io 和 Express 4的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Socket.io 和 Express 进行集群

text Express 4和Socket.io:将socket.io传递给路由。

带有express和socket.io的节点js-找不到socket.io.js

带有 socket.io 和 express 的 Websocket

如何使用 Express、AngularJS、Socket.io 广播和获取通知?

NodeJS、Express 和多事的 Socket.io