Tag: 架构

NodeJS和socket.io消息调度最佳实践

我们正在用NodeJS和websockets编写多人游戏。 在devise服务器的架构时,我们提出了处理大多数自己的通信的对象的想法。 关于连接的第一个例子,我们将把套接字传递给客户端对象,客户端对象然后可以自己处理通信。 其中一个好处就是不必拥有一个全局处理程序来传递消息。 这使责任分开。 然后,我可以通过向客户发送房间ID来告诉客户自己通过socket.iofunctionjoin特定房间。 我们可以看到的主要缺点是可能会出现我们需要复制套接字。 即:如果客户从房间断开并想要join另一个房间。 所以另一种select是采用更经典的方式,全局处理所有的消息,然后把关联的id路由到相关的对象。 你们会build议一个解决scheme,为什么?

RTS HTML5游戏多人游戏 – 启动node.js服务器游戏

我用HTML5制作了一个RTS游戏( 带有create.js ), 并且想用node.js添加多人游戏部分。 我可以将html和javascript文件转换为.exe,以使用Web2ExeWin-v0.4.2b作为“正常”应用程序运行游戏 我研究了node.js并启动了一些简单的服务器。 概念:用户打开游戏,可以启动单人游戏(无需服务器)或用户启动多人游戏,可以邀请朋友到大厅。 之后,他可以开始多人游戏。 正常的rts游戏。 想法:要启动服务器游戏,我必须执行“node server.js”命令。 现在用户将join他的服务器,并可以将数据发送给其他游戏用户join游戏。 问题:这个想法出了什么问题? 我无法运行用户的cmd命令来打开节点服务器,因为它在javascript中。 什么是在JavaScript中实现node.js多人部分的正常方式,以便每个用户可以创build自己的游戏服务器?

在AngularJS和数据库之间保持唯一标识符同步的最佳方法是什么?

我的Angular / Node应用程序显示用户事件的时间轴。 用户可以添加,编辑和删除事件。 当添加新事件时,AngularJS将事件内容作为JSON添加到时间轴数组中,以立即显示给用户。 同时,AngularJS调用一个将事件插入数据库的Node API,在这个过程中,DB生成一个event_id(使用自动增量)。 在AngularJS和数据库(mysql)之间保持event_id同步的最佳devise是什么? 思路: 我可以等待API返回event_id并将其插入到AngularJS时间轴数组中。 这里的问题是,如果用户在event_id返回之前编辑事件,则应用程序不知道要更新哪个事件。 在添加新事件时,我可以在AngularJS端生成一个随机数(temp_id),并在时间轴数组中使用它,并通过API将其发送到数据库。 这里的一个问题是跟踪两种types的ID:temp_id和event_id 这两个想法都有缺点。 有人可以提出一个更好的devise?

1或JSON模式中的一组属性

我的JSON数据模型有一个对象,其中只有一个或一个属性,以及其他属性都有自己的约束。 有没有办法做到这一点,而不是在这个例子中重复? 下面是一个简单的例子,就像我已经用Node.js + ajv实现这个一样。 var Ajv = require('ajv'), ajv = new Ajv(); var schema = { type: 'object', properties: { id: {type: 'string'}, a: {type: 'integer'}, b: {type: 'integer'} }, required: ['id'], oneOf: [ {required: ['a']}, {required: ['b']} ], additionalProperties: false }; // invalid var json1 = { id: 'someID', a: 1, b: 3 […]

适合Node.js模块和数据库连接的体系结构?

我在写一个接受TCP连接的节点应用程序。 我有几个单独的节点模块(利用导出function)。 每个需要一个数据库连接来处理它们的一些function。 build立/处理数据库连接的最佳方式是什么? 应该每个模块创build一个单独的连接,或者如果我需要他们的主要JS文件传递到模块的数据库连接处理程序?

如何在NodeJs上为RestAPI创build一个干净的体系结构

我正在考虑将一些REST服务移动到NodeJS。 我唯一担心的是这种解决scheme的架构。 它是否存在某个指导方针? 当然,我看到一些图书馆喜欢restify。 这是一个好的开始,但还不够。 我期待层的分离,dependency injection,unit testing,CSRF和更多。

最好的MongoDB架构的Twitter克隆?

我知道类似的问题已经被问到,但是对一个基本问题寻找一个非常基本的答案。 我是MongoDB的新手,做一个Twitter风格的应用程序(博客,追随者等),我想知道最好的模式使用。 现在我有(非常高): Member { login: string, pass: string, posts: [ { title: string, blog: string, comments: [ { comment: string } ] } ] } 还有更多,但是这给你的想法。 现在的问题是我正在寻找添加“追随”function,我不知道最好的路线去。 我可以给成员添加一个“以下”embedded式文档,但是我不确定使用mongoDB最聪明的方法是什么。 我的主要观点显然是主要的“饲料”页面,你可以看到所有你关注的人的post。

django npm和节点包的体系结构

在我join的项目中,是node_packages的体系结构: |- Django project |– app1 |– app2 |– node_modules |— foundation-sites |— grunt |– static |— css |— images |— js |–urls.py |–settings.py |–package.json 我个人认为node_packages应该在js文件夹下的静态以及package.json如下所示: |- Django project |– app1 |– app2 |– static |— css |— images |— js |—- node_modules |—– foundation-sites |—– grunt |—- packages.json |–urls.py |–settings.py 有没有区别? 这是最好的做法? 为什么?

如何在调用responde.end()之后执行NodeJS / connect中间件?

我想实现这样的事情: var c = require('connect'); var app = c(); app.use("/api", function(req, res, next){ console.log("request filter 1"); next(); }); app.use("/api", function(req, res, next){ console.log("request filter 2"); next(); }); app.use("/api", function(req, res, next){ console.log("request handler"); res.end("hello"); next(); }); app.use("/api", function(req, res, next){ console.log("response post processor"); next(); }); app.listen(3000); 当我蜷缩的地址,我得到一个例外的控制台抱怨标题发送后不会被打扰,这是公平的。 只有我不接触响应对象。 /usr/bin/node app2.js request filter 1 request filter […]

服务器端和胖客户端Web应用程序的文件夹结构

目前我使用的Node.js的后端和extjs或主干客户端,我现在完全困惑的文件夹结构。 使用express我的文件夹结构如下 appname |–controllers |–models | |–appmodel.js |–public | |–css | |–js // any client-side javascripts |–routes | |–router.js |–views | |–appview.ejs |–app.js 其中app.js是入口点,它使用router.js来处理视图的路由和呈现。 如果只是服务器端开发,这工作得很好。 现在,如果我想为客户端使用ExtJS或Backbone,应该如何组织我的代码? 我应该将其添加到公用文件夹或views ? appname |–controllers | |–extbasedcontroller.js // correct location? |–models | |–appmodel.js | |–extbasedmodels.js // correct location? |–public | |–css | |–js | | |–extjs // extjs files |–routes […]