我打算开发我的第一个SPA作为实验。我有一个可以在一个页面中工作的交互式论坛平台的想法。通知和所有这些奇特的功能包括在内。
多年来,我在服务器端和AJAX上开发了许多使用PHP的Web应用程序。问题是,这怎么能适用于我的情况(或类似情况)?用户必须登录并且他应该在考虑内容(新回复,新主题和列表经过)的情况下接收更新。我认为标准是请求 - 响应,正如我所看到的,情况并非如此。
用户和服务器之间的连接必须是持久的。如果我要制作一个长轮询的ajax应用程序,为什么我应该考虑单页面应用程序?服务器必须保留连接用户列表并推送更新(如node.js,socket.io等)。这些技术似乎是Web开发领域的新技术。
我的问题是什么是标准? Twitter如何做到这一点,Facebook如何做到这一点,Gmail如何做到这一点......我认为像Knockout.js,Sammy.js,Backbone,Underscore等技术。这些很棒,我可以处理它们。服务器怎么样?那个着名的“实时”网络呢?
对上述示例的任何策略建议都是有用且可接受的。
提前感谢您甚至打扰阅读此内容。
答案 0 :(得分:3)
如果您问的是实时应用程序的标准也存储状态,那么就没有。有许多方法可以“给猫皮肤”。
Socket.io,在准系统端,将抽象出你是否使用AJAX长轮询或websockets。 (不支持websockets的浏览器将自动切换到AJAX长轮询)
“请求/响应”模型不是通过http,而是使用事件和侦听器的发布/订阅模型的websockets。例如,服务器端的监听器将在其twitter api连接中检测到新的推文,并通过websockets为客户端套接字监听器广播事件,然后通过接收的新信息实时更新DOM。 WebSockets的....... 这种与事件和监听器的套接字通信是双向的。我会粘贴一些代码,但我不在我的机器上,它上面有我的套接字代码,只需谷歌搜索任何使用socket.io with express将显示绳索。
编辑:“标准方式”是服务器端的Socket.io/Express,客户端有Backbone / Socket.io。
Fog Creek对Trello实时堆栈的出色建筑描述:http://blog.fogcreek.com/the-trello-tech-stack/