2012-06-06 140 views
3

我試圖在我的JavaScript客戶端和我的服務器上開發一個長輪詢,管理http請求。 在服務器中,我有一個Restlet偵聽請求並處理它們,在客戶端,我有一個javascript api,它使用xmlhttprequest對象進行http調用。在服務器中實現長輪詢

現在我已經在js setTimeOut延遲3秒,使服務器投票,在大多數請求我什麼都收不到,我想實施一個長輪詢。 我的問題是,如果我必須在我的服務器中實現長輪詢的邏輯,我的reslet使用碼頭,並且我會實施像'Thread.sleep'之類的東西,直到我有任何發送給客戶端?或者我在java或restlet中有本地方法,可以讓我在沒有很長時間的情況下執行。

我很感謝你的回答!

+0

你可以增加你的延遲,例如每次你的回答爲空時(因此延遲將變爲3/6/12/24/48/96/...秒),然後在你收到東西時再次設置爲3秒 – fcalderan

+0

但是,在這種情況下,當我做5º拉,是空的,下一個拉將在96秒?....很長的時間,因此我想替換爲長輪詢 – Kalamarico

+0

如果你是開放的新技術:看看在http://socket.io/。服務器端是node.js.它使用websocket,它甚至比longpolling更好,並且如果websocket不可用,它有幾個回退。 – Christoph

回答

0

實際上,我已經使用java併發性實現了長輪詢:wait()& notify()system for java objects。