使网页实时和多用户的最佳方式
Best way to make a webpage live and multiuser
我正在构建一个用于"头脑风暴"的web应用程序它的工作原理是:基本上,用户可以进入应用程序,提交挑战,或者点击已经存在的挑战,然后想出解决挑战的想法并发布。我在couchdb上拼凑了一个基本的例子:http://wamoyo.iriscouch.com/ideageneration/_design/IdeaGeneration/attachments%2findex.html
我将从头开始重建它,我遇到了一个我非常陌生的挑战。我希望多个用户能够同时为同一个挑战产生想法。有点像谷歌文档允许多人编辑共享文档的方式。我对如何进行这项工作有一些初步的想法,但我想我应该询问这里的专家网络。
我对AJAX很满意,有没有一种纯粹的AJAX方法可以让它变得实时和多用户?使用node.js会有巨大的好处吗?还有什么其他选择?
非常感谢soo!
制作这样的网页有几种方法,使用简单的ajax轮询、使用长轮询和使用web套接字。
-
Ajax轮询-易于实现,本质上是通过javascript定时器定期连接到服务器,从服务器检索数据并通过常规Ajax将其发送回。
- 优点:易于实施,适用于任何地方
- 缺点:更新不是实时的,只有在计时器滴答作响时才能交换数据
-
长轮询-这个想法是连接保持打开状态,直到超时,然后重新建立连接。由于不同网络服务器、路由器等的请求超时设置不同,实现起来可能很棘手。
-
Web套接字是HTML5保护伞的一部分,只能在相当现代的浏览器中使用,协议经常更改,这可能会在开发和生产过程中导致不兼容。可以与现代浏览器本地使用,也可以通过旧浏览器的Flash插件使用。这项技术是最轻量级的,因为它不会产生所有的HTTP开销。可以将其视为浏览器和web服务器之间通过TCP的双向、全双工通信通道。
为了进行详细的讨论,我建议阅读Scott Hanselman的这篇好文章。它告诉了SignalR的故事,但适用于其他服务器端框架。
还有同一位作者的播客,嘉宾对这些技术进行了相当深入的解释。值得倾听,IMO.
要回答您关于node.js的问题,请与我们分享您当前的服务器技术,以便我们能够深入了解您的堆栈。
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 为react组件传递道具的最佳方式
- 让Webpack管理Quirky AMD定义的最佳方式
- 在承诺链中处理早期回报的最佳方式
- 在ng重复循环中显示条件内容的最佳方式是什么
- 在phonegap中为android调用onload函数的最佳方式
- 链接两个网页或网络应用程序的最佳方式
- 什么's是连接供应商js文件的最佳方式
- 什么's是在javascript中迭代项的最佳方式
- 在node.js中编写单元测试的最佳方式是什么
- 在页面上记录数据并实现pushstate()的最佳方式
- 使用AJAX在Rails中提交动态表单的最佳方式是什么
- 什么'这是加载jQuery的最佳方式
- 将大数组(字符串和类型数组的混合物)存储到blob或文件中/从blob或文件检索大数组的最佳方式
- 在网站上显示.mov作为加载屏幕的最佳方式
- 使用Angular存储用户以前是否选中过复选框,然后再调用它的最佳方式是什么
- 以角度渲染表中数据的最佳方式
- 删除集合中旧邮件/帖子的最佳方式
- 显示全屏Ajax加载程序的最佳方式
- PHP和JS中表单验证的最佳方式