使网页成为现场和多用户的最佳方式

时间:2012-03-12 06:04:10

标签: javascript ajax couchdb multi-user

我正在为“头脑风暴”构建一个网络应用程序。以下是它的工作原理:基本上,用户可以访问应用程序,提交挑战,或点击已经存在的挑战,然后想出解决该挑战的想法并发布它们。我在couchdb上一起编写了一个基本示例:http://wamoyo.iriscouch.com/ideageneration/_design/IdeaGeneration/attachments%2findex.html

我将从零开始重建它,并且我正在应对一个对我来说非常陌生的挑战。我希望多个用户能够同时为同一个挑战生成想法。有点像谷歌文档允许多人编辑共享文档的方式。我对如何解决这个问题有一些初步的想法,但我想我会在这里询问专家网络。

我对AJAX很满意,有没有一种纯粹的AJAX方式让它变为现场和多用户?使用node.js会有很大的好处吗?可能还有其他什么选择?

非常感谢!

1 个答案:

答案 0 :(得分:3)

使用普通的ajax轮询,使用长轮询和使用Web套接字,有几种方法可以制作此类网页。

  • Ajax轮询 - 易于实现,基本上通过javascript计时器反复连接到服务器,从服务器检索数据并通过常规Ajax将其发回。

    • 优点:易于实施,无处不在
    • 缺点:更新不是实时更新,只有在计时器滴答时才会交换数据。
  • Long polling - 想法是连接保持打开状态直到超时,然后重新建立连接。由于不同的Web服务器,路由器等的请求超时设置不同,实施起来可能很棘手。

  • Web sockets - HTML5的一部分,仅适用于相当现代的浏览器,协议经常更改,可能会在开发和生产过程中导致不兼容。可以在现代浏览器中使用,也可以通过Flash插件与旧版浏览器一起使用。这项技术最轻量级,因为它不会产生所有HTTP开销。可以将其视为浏览器和Web服务器之间通过TCP的双向全双工通信通道。

有关详细讨论,建议您阅读this good post by Scott Hanselman。它讲述了有关SignalR的故事,但适用于其他服务器端框架。

同一作者还有podcast,客人非常深入地解释这些技术。值得一听,IMO。

要回答有关node.js的问题,请与我们分享您当前的服务器技术,以便我们更深入地了解您的堆栈。