我正在一個函數中實現一個簡單的聊天實現,該函數有一個調用setTimeout來調用成功的ajax調用。這每30秒左右運行一次。這工作正常,但我希望在消息到來時立即收到通知。我看到了很多的例子與jQuery代碼長輪詢,看起來是這樣的:長時間投票:我如何冷靜下來?
function poll()
{
$.ajax(
{
data:{"foo":"bar"},
url:"webservice.do",
success:function(msg)
{
doSomething(msg);
},
complete:poll
});
}
我理解它是如何工作的,但這將只是不停重複發送立即請求到服務器。在我看來,需要在服務器上有一些邏輯,直到某些事情發生變化,否則即使沒有新的報告,也會立即發回響應。這是純粹在JavaScript處理還是我錯過了一些要實現的服務器端?如果在服務器上處理它,暫停服務器執行真的是個好主意嗎?在所有的經驗中,處理這個問題的更好方法是什麼?我的setTimeout()方法是否足夠,也許只有一個較小的超時?
我知道websocket,但由於它們還沒有得到廣泛的支持,我想堅持使用當前的技術。
謝謝你們。我一直在尋找關於框架無關的一般概念的良好討論,並且你們都提供了一些很好的反饋。聽起來像這樣只是衡量增加的流量是否值得加快響應的問題。就我而言,它看起來像setTimeout是最好的折中。 – AceCorban