如果有人可以帮我解决一个小问题,我将不胜感激.
使用socket.io广播功能和在Redis上使用pub/sub设计架构有什么区别?
例如,在另一个示例中,node.js服务器正在侦听(socket.io)CRUD请求(创建)"key"(模型"todo")和值"data".它收到它的那一刻,它再次发送给同一个用户,并广播给在同一个"频道"上收听的所有用户.
socket.on('todo:create', function (data, callback) {
var id = guid.gen()
, todo = db.set('/todo/' + id, data)
, json = todo._attributes;
socket.emit('todos:create', json);
socket.broadcast.emit('todos:create', json);
callback(null, json);
});
Run Code Online (Sandbox Code Playgroud)
但是还有另一种使用socket.io"广播"某种东西的方法,并且正在使用带有Redis的pub/sub平台来实现key:value函数.例如,在另一种情况下,我们正在监听基于"密钥"(模型),函数(创建)和值(数据)的CRUD请求.但是在这种情况下,一旦收到它,就不会通过"socket.broadcast.emit()"发送,而是在Redis上发布:
socket.on(key + ':create', function (data, callback) {
var t = new ModelClass(data)
, name = '/' + key + ':create';
t.save(function (err) {
pub.publish(key, JSON.stringify({key: name, data: t}));
});
});
Run Code Online (Sandbox Code Playgroud)
因此,在服务器端,对模型进行的每个更改(并发布到Redis)都将被捕获(处理程序),并发送到用户客户端(在我的情况下,backbone.js),这将根据模型呈现其模型关键:收到的价值:
sio.on('connection', function (socket) {
sub.on('message', function (channel, message) {
var msg = JSON.parse(message);
if (msg && msg.key) { …Run Code Online (Sandbox Code Playgroud) 关于backbone.js(文档,示例等)的阅读,据我所知,这个框架允许您直接在前端,几乎所有后端引擎上编码,因为您可以构建MVC架构.您可以创建数据模型,控制器等.
我的问题是:如果您已经在前端(引擎)上构建了MVC架构,那么您只需要在云中使用DataBase(SQL)来获取或存储数据,为什么还需要后端引擎(RoR3,Java等)来保存文档数据?
提前致谢
我正在学习Node.js,我已经阅读了一些教程,比如The Node Beginner Book,用于学习核心功能.但是我越是阅读一些例子,我开始收集的疑虑就越多.
在另一个从教程中获得的示例中,我们可以看到,对于密钥的CRUD"读取"请求/documents/titles.json,我们返回一个值:
app.get('/documents/titles.json', loadUser, function(req, res) {
Document.find({ user_id: req.currentUser.id },[], { sort: ['title', 'descending'] },
function(err, documents) {
res.send(documents.map(function(d) {
return { title: d.title, id: d._id };
}));
});
});
Run Code Online (Sandbox Code Playgroud)
在此示例中,该函数loaduser()用于身份验证:
function loadUser(req, res, next) {
if (req.session.user_id) {
User.findById(req.session.user_id, function(err, user) {
if (user) {
req.currentUser = user;
next();
} else {
res.redirect('/sessions/new');
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
我不明白的是:
loadUser()函数有三个参数:req,res,next,但至少我没有看到你如何从app.get()"req"参数传递给loadUser().从哪里来?loadUser()函数内部,当你执行时next(),它意味着函数app.get() …我正在学习如何使用敏捷方法在RoR中领导一组开发人员.我在网上找到了一些像VersionOne或PivotalTracker这样的工具,可以帮助你创建迭代,积压,故事等,这样你就可以将工作分为前端和后端,让你的开发人员专注于特定的任务.
我的问题是在你开始使用这个敏捷工具,创建故事和迭代之前的步骤,你的开发人员开始在每个工具上增长.我的疑问是关于技术,功能和非功能软件需求规范的步骤,因此在您清楚地了解之后,您可以开始编写故事:
http://en.wikipedia.org/wiki/Non-functional_requirement.
是否有工具可以指导您如何将Web应用程序(或移动应用程序)的想法转换为成功的故事/迭代列表?状态,特征或功能(及其关系)的某种可视化表示,您可以在其中指定功能,非功能和技术规范,那么之后您可以创建故事吗?
非常感谢你的时间和耐心.
agile requirements specifications user-stories agile-project-management
agile ×1
architecture ×1
backbone.js ×1
backend ×1
express ×1
frontend ×1
node.js ×1
redis ×1
requirements ×1
socket.io ×1
user-stories ×1