简单的实时网络应用程序,用作“投票终端”

时间:2016-04-28 13:55:34

标签: javascript node.js sockets websocket socket.io

我被要求投射一个 web 解决方案,以允许在公共集会中投票。

解决方案应在服务器上用node.js编写,javascript,可能在客户端使用angular.js(因为javascript是我最熟悉的语言,今天:-)。

应用程序应在移动设备上运行,并且非常简单:它应该处理某种身份验证,识别设备的所有者(“用户”),并且应该显示带有两个按钮的表单({{ 1}}和Yes) 按下按钮应发送到中央服务器(在LAN上) 服务器应收集并存储用户的投票,并应选择何时启用按钮(投票会话已打开),何时禁用它们(投票会话已关闭)。

为了更清楚,应用程序将替换当前设备,如下所示:

vote terminal

图片中不太清楚,但设备有两个按钮,一个用于“是”投票,一个用于“否”(有更多按钮,但它们的用途不相关,在这里)。

最初,该应用只会处理投票(而不是音频)。

我对网络实时编程完全不熟悉,所以我对这个项目要采用的软件库堆栈存在疑问。

谷歌搜索,我看到socket.io可能是一个很好的解决方案,但我更愿意询问社区,试图找到最合适的解决方案。

所以最后一个问题:你知道任何开源项目,教程,博文,我可以学习什么来开始设计我试图描述的应用程序吗?

任何解决方案,观察,观点,现实生活经验都会受到欢迎......

2 个答案:

答案 0 :(得分:2)

我还会看一下PubNub,它是一个实时的全球数据流网络 - 这是一个很好的投票应用教程:https://www.pubnub.com/blog/2014-11-18-power-a-realtime-voting-app-with-live-results-using-d3js/

有很好的开发人员资源可以帮助您获得帮助,以及许多附加组件,例如状态,历史记录和实时图表,例如EON:https://www.pubnub.com/developers/eon/

答案 1 :(得分:0)

Socket.io主要用于实时需要的东西。传统的RESTful API是一种更好/可靠的方法。

要开始,我建议阅读MEAN堆栈(也允许你使用MongoDB数据库),一些教程应该是一个很好的起点: https://scotch.io/tutorials/setting-up-a-mean-stack-single-page-application https://thinkster.io/mean-stack-tutorial

https://www.npmjs.com/package/slush-meanjs是支撑项目的好资源。 Slush是一个使用GULP的生成器,与yeoman生成器相比,它只是刚刚开始实现gulp作为其任务运行器(目前使用grunt作为默认任务运行器)。对于MEAN堆栈,Yeoman仍然没有很好的生成器。但是,如果您计划排除数据库,那么一个好的起点就是在后端使用express,并将angularjs作为前端。要做到这一点,您可以使用generator-express(https://github.com/petecoop/generator-express)构建一个快速项目,一旦设置了快速,您可以使用https://github.com/yeoman/generator-angular为其添加角度。

目录看起来像这样:

-app
---*client side libs*
-bin
--- www /* npm start to start the server */
-routes/ /* for all your express routing */
-test/
...
-app.js
...

对于身份验证,您可以使用scaffolded out CRUD模型。如果使用socket.io进行所有客户端服务器通信,这是一个很好的资源 - https://auth0.com/blog/2014/01/15/auth-with-socket-io/