2009-10-03 46 views
4

我想了解推送服務是如何工作的。我相信推送通知是服務器向客戶端推送新項目的地方,但我不知道實際中這是如何工作的。如何推送電子郵件/聊天工作?它可以輕鬆實現小型網站嗎?

例如,如果手機沒有手動檢查服務器是否有新消息,它會如何知道它有新的電子郵件?

此外,如何實現一個小型網站的聊天程序或通知系統?有沒有PHP課,等等..?

回答

3

我假設你正在談論一個HTTP客戶端?它通常使用服務器推送或Comet技術完成。在頁面加載客戶端保持連接打開以接收服務器推送消息之後,而不是簡單地關閉HTTP連接。

查看this SO entry瞭解如何使用JQuery實現的一些細節。

網絡上有一些examples for PHP,但如果您期望的不僅僅是少數連接,否則您可能會用完Apache服務器連接,但您可能想要查看cometd服務器。

8

例如,如果手機沒有手動檢查服務器是否有新消息,它是如何知道它有新電子郵件的?

PUSH實現方式因協議而異,但原理保持不變。客戶端和服務器之間的連接保持開放,服務器通知客戶端新事件。這利用了較少的帶寬,並且通常導致比客戶端週期性詢問服務器是否有任何新事件在等待的更快的交互。

作爲示範,這是多麼PUSH IMAP(被稱爲IDLE)郵寄作品:

  1. 客戶端登錄到電子郵件服務器正常。
  2. 在登錄過程中,服務器通知它有能力IDLE
  3. 客戶端正常執行新郵件的檢查和下載。
  4. 而不是定期輪詢新消息客戶端發出IDLE命令。
  5. 服務器和客戶端之間的會話保持安靜。
  6. 當新郵件到達並且服務器通知郵件EXISTS
  7. 客戶端然後可以退出IDLE模式與DONE並下載這些消息。從第4步
+0

感謝

  • 重複,不使用推(像例子中,你上面的描述),把更多的負載在服務器上不僅僅是輪詢每隔1秒? – chris 2009-10-03 17:57:18

  • +2

    Au對應。它應該導致服務器負載的減少,併發連接和線程的使用稍高一些。與持續登錄和輪詢週期相比。 – 2009-10-04 08:41:22

    相關問題