2013-04-16 97 views
3

我打算開發我的第一個SPA作爲一個實驗。我有一個可以在單個頁面中工作的交互式論壇平臺。通知和所有這些奇特功能包括在內。交互式單頁應用程序

多年來,我在服務器端和AJAX上開發了許多使用PHP的Web應用程序。問題是,這怎麼能適用於我的情況(或類似的情況)?用戶必須登錄,他應該收到更新,考慮內容(新的回覆,新的主題和清單過去)。我認爲這個標準是要求 - 反應,而且我認爲這不是這種情況。

用戶和服務器之間的連接必須是持久的。如果我要製作一個長輪詢ajax應用程序,那麼爲什麼我應該考慮單頁面應用程序?服務器必須保存已連接用戶的列表並將更新推送給它們(如node.js,socket.io等)。這些技術似乎是網絡開發領域的新興技術。

我的問題是什麼標準? Twitter如何實現,Facebook如何實現,Gmail如何實現,還有其他內容......我認爲像Knockout.js,Sammy.js,Backbone,Underscore和其他技術。這些都很棒,我可以處理他們。服務器呢?那個着名的「實時」網絡呢?

以上示例的任何策略建議都很有用並且可以接受。

提前致謝,甚至煩惱讀這個。

+0

這更是一個論壇帖子比SO問題。 – Vector

+0

那麼這仍然是一個問題。我需要一個答案。我們可以討論這個問題的好壞,我只需要這樣做的標準方法(或者最適用)。 – nLamprok

回答

3

如果你問什麼也存儲狀態的實時應用程序的標準,那麼沒有一個。有許多方法可以讓貓變皮。

在準系統端,Socket.io會抽象出你是否使用AJAX long-polling或websockets。 (不支持WebSockets的瀏覽器會自動切換到AJAX長輪詢)

「請求/響應」模式是不通過HTTP,它使用事件和聽衆的pub/sub模型已經結束了的WebSockets。例如,服務器端的監聽器會在其twitter api連接中檢測到新的推文,並通過websockets爲客戶端套接字監聽器廣播事件,然後實時更新DOM,並收到新的信息websockets ....... 這個與事件和監聽器的套接字通信是雙向的。我會粘貼一些代碼,但我不在我的機器上,它有我的套接字代碼,並且只需使用socket.io就可以使用谷歌搜索功能,Express將向您展示繩索。

編輯:「標準方式」是服務器端的Socket.io/Express,客戶端有Backbone/Socket.io。

對Trello實時堆棧的優秀架構描述由霧溪:http://blog.fogcreek.com/the-trello-tech-stack/

+0

我很高興爲您解答。對於發展中的世界來說,新技術應該不是一種風險嗎? (這些框架中的大多數都非常新,而且它們工作得很好) – nLamprok