3

我正计划开发我的第一个 SPA 作为实验。我有一个可以在单个页面中工作的交互式论坛平台的想法。包括通知和所有这些花哨的功能。

多年来,我在服务器端使用 PHP 和 AJAX 开发了许多 Web 应用程序。问题是,这如何应用于我的情况(或类似情况)?用户必须登录,并且他应该会收到考虑到内容的更新(新回复、新主题和列表经过)。我考虑了标准,即请求-响应,正如我所看到的,这里不是这种情况。

用户和服务器之间的连接必须是持久的。如果我要制作一个长轮询 ajax 应用程序,那么我为什么要考虑单页应用程序?服务器必须保留已连接用户的列表并向他们推送更新(如 node.js、socket.io 等)。这些技术在 Web 开发领域似乎是新的。

我的问题是什么标准?Twitter 是如何做到的,Facebook 是如何做到的,Gmail 是如何做到的等等……我考虑了诸如 Knockout.js、Sammy.js、Backbone、Underscore 之类的技术。这些很棒,我可以处理它们。服务器呢?那么著名的“实时”网络呢?

上述示例的任何策略建议都是有用的并被接受。

提前感谢您甚至费心阅读本文。

4

1 回答 1

3

如果您要询问同时存储状态的实时应用程序的标准是什么,那么没有标准。有很多方法可以“给猫剥皮”。

无论您使用 AJAX 长轮询还是 websockets,Socket.io 在准系统端都会抽象出来。(不支持 websockets 的浏览器会自动切换到 AJAX 长轮询)

“请求/响应”模型不是通过 http,而是通过使用事件和侦听器的 pub/sub 模型的 websockets。例如,服务器端的监听器会在其 twitter api 连接中检测到一条新推文,并通过 websockets 为客户端套接字监听器广播一个事件,然后客户端套接字监听器将使用接收到的新信息实时更新 DOM websockets.......这种与事件和侦听器的套接字通信是双向的。我会粘贴一些代码,但我不在我的机器上,上面有我的套接字代码,只需在谷歌上搜索任何使用 express 的 socket.io 都会告诉你绳索。

编辑:“标准方式”是服务器端的 Socket.io/Express,客户端的 Backbone/Socket.io。

Fog Creek 对 Trello 实时堆栈的出色架构描述:http: //blog.fogcreek.com/the-trello-tech-stack/

于 2013-04-16T20:57:55.987 回答