2011-07-13 77 views
1

我想爲我正在開發的項目創建一個API,允許開發人員創建圍繞其功能構建的桌面和移動應用程序。我一直想要學習如何做的一件事是創建一個無狀態的推送通知系統,類似於Twitter的Streaming API。幫助使用PHP和Apache創建流式(或推式)API

基本上,我希望能夠實時或儘可能接近地通知用戶數據的任何變化。我知道在移動設備上這可能會很困難,這就是爲什麼移動應用程序可能會定期檢查更新以節省電池的原因。但是,桌面應用程序不會有這種限制。我想避免讓應用程序詢問服務器是否有新的信息,而是讓服務器告訴應用程序有新的數據。

我的編程語言是PHP,我的服務器是Apache。如果我絕對不得不我可以切換到Lighttpd或nginx,但這絕對是最後的手段,因爲它需要對我現有的所有代碼進行很多更改。

我讀過這篇文章:

http://www.zeitoun.net/articles/comet_and_php/start

並測試了它,但不幸的是所發生的一切是我的瀏覽器會試圖加載頁面,實際上從未顯示時間。我懷疑這是因爲,無論什麼原因,我從來沒有能夠得到輸出緩衝工作在我的服務器上,除非我發送64kb(或更多)的數據。我聽說我必須禁用gzip,但我仍然沒有工作,所以我不知道。

回答

2

看一看一些現有的技術來幫助你做到這一點:

Tornado

龍捲風是可擴展的,無阻塞的網絡服務器和工具,權力的FriendFeed的一個開源版本。 FriendFeed應用程序是使用web框架編寫的,該框架看起來有點像web.py或Google的web應用程序,但是具有額外的工具和優化功能以利用底層的非阻塞基礎架構。

Pusher

推杆是快速託管API,通過WebSockets向網絡和移動應用輕鬆安全地添加可擴展實時功能。

兩者都非常快速和可擴展性,並且我已經設置相對容易。

0

那麼你可以通過幾種方式來實現,你可以在客戶端建立一個輪詢器,或者你可以使用類似NodeJS的東西。 (http://nodejs.org/)或網絡套接字。