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的主要内容,如果未能解决你的问题,请参考以下文章
text Express 4和Socket.io:将socket.io传递给路由。
带有express和socket.io的节点js-找不到socket.io.js
带有 socket.io 和 express 的 Websocket