回答
客戶端必須進行輪詢,但可以執行long polling,即保持請求活動直到服務器有推回的事件(即完成請求)。
否則,您可以使用Web套接字。
你可以讓客戶端使用像彗星等長輪詢機制,但沒有辦法真正「推」。
PHP中的websockets怎麼樣? – 2012-06-17 13:54:11
您可以使用「彗星」來做到這一點。不過,PHP對Comet來說是一種糟糕的語言。在PHP中使用Comet的一種比較流行的技術就是長時間輪詢。
長查詢的想法是創建一個AJAX請求到服務器。服務器接受連接但不響應(即:while
循環,其中有sleep(1)
),直到發生事件。這可能是秒,分鐘等。
但是,爲了讓長輪詢「工作」,您必須確保連接不會很快超時,因此請將執行時間設置得很高(如果可能的話,分鐘或無限)。您還需要在處理服務器斷開連接/超時的客戶端上編寫代碼。當發生這種情況時,應該開始一個新的請求。
希望這會有所幫助!
+1非常感謝您提供豐富而詳細的答案。 「用PHP做彗星是一種可怕的語言」 - 你有什麼建議? – Mawg 2010-11-18 05:58:57
這不是真的太相關jquery,而是Http本身。
這基本上是不可能的服務器推送什麼客戶端主動,兩個可能的解決方案是:
保持HTTP連接而不將其關閉。
輪詢
加1。謝謝 – Mawg 2010-11-18 06:00:12
HTTP協議工作於請求 - 響應原理,這意味着 服務器只能產生以下從 客戶端的請求的響應。這意味着服務器不能發送響應到 客戶端沒有收到請求擺在首位。這是 不是PHP的問題,它是一個HTTP問題。所以不,你不能推,客戶必須提出要求,或民意調查。正如亞歷克斯所建議的,你可以看看長輪詢。
+1好點;無論使用哪種編程語言,它都是HTTP – Mawg 2010-11-18 05:59:39
- 1. 我可以繼續將數據從服務器推送到同一連接嗎?
- 2. .NET Ria服務可以將數據從服務器推送到客戶端嗎?
- 3. .NET Ria服務可以將數據從服務器推送到客戶端嗎?
- 4. 可以從服務器禁用PHP發送的cookie嗎?
- 5. 從我的服務器發送推送通知PHP
- 6. 從ftp服務器推送
- 7. 我可以從PHP服務器授權Google Drive嗎?
- 8. 服務人員 - 從我的服務器獲取推送數據
- 9. 是否可以從git服務器推送到客戶端?
- 10. 從服務器發送推送通知
- 11. JavaMail支持服務器推送嗎?
- 12. php推送服務器不能發送乘法推送消息
- 13. Laravel服務器推送
- 14. 從我的網站發送推送通知到pushwoosh服務器
- 15. 服務器推送技術(aka。「COMET」,「http服務器推送」,「websockets」)
- 16. 推送通知與PHP服務器?
- 17. 從PHP服務器發送推送通知到Android設備
- 18. ajax推送服務器
- 19. 我可以看到jQuery發送到外部服務器的內容嗎?
- 20. 我可以讓Web服務器成爲索引服務器嗎?
- 21. 我可以使用PHP通過交換服務器發送會議投影嗎?
- 22. php服務器到服務器推送通信
- 23. Git推送到服務器
- 24. 我可以將標籤推送到當前推送的git嗎?
- 25. 爲什麼我們從服務器端發送推送?
- 26. 我可以推送我從標籤創建的分支嗎?
- 27. Web服務可以將消息從服務器發送到客戶端嗎?
- 28. 刪除的Firefox令牌仍然可以通過Mozilla推送服務器推送
- 29. 是否可以從PHP服務器發送迴應到iphone?
- 30. 從GitHub推送到Web服務器
目前沒有可靠的推送方法。看看長輪詢。 – jwueller 2010-11-18 04:01:27
加1。謝謝 – Mawg 2010-11-18 05:57:12