2012-12-07 84 views
1

我正在爲我的網站開發一個簡單的網絡聊天應用程序。但是,對我而言,使用間隔時間並請求每秒與ajax聊天時感覺錯誤?jQuery ajax聊天重新加載

正是我今天做的是這樣的,

<script> 

    $(function() { 

     $('#chat_form').submit(function() { 
      $.post('chat/post', $('#chat_form').serialize(), function(data){ 
       var message = $("#message").val(); 
       $("#message").val(''); 
       $("#chat_main").append('<li><b>Bruker: <?php echo " ".$this->session->userdata("chat_username") ?></b>: ' + message + '<br/></li>'); 
      }); 
      return false; 
     }); 

     function loadchat() 
     { 
      $('#chat_main').load('chat/load'); 
     } 

     setInterval(loadchat, 500); 
     loadchat(); 

}); 

</script> 

有沒有其他更好的辦法?

+0

您不會每次請求所有聊天信息。你需要獲得你沒有的帖子。例如:您首次加載20個聊天消息。第一個的ID爲101.你需要獲得大於「101」的所有帖子(我記得他們是按順序遞減的)。祝你好運!另外檢查websocket HTML5 – ioanb7

回答

0

This is真的很酷的文章關於聊天應用程序和使用jQuery實現彗星的最佳方式。

它的作品適合我。

爲了使它完美無缺,因爲它在時間戳上的工作很少,所以當你改變你的機器日期時,它不能執行,但在服務器上工作正常。

使用xml替換文本文件實現是一種很好的做法。

1

你可以使用Server Side Events它應該允許相同的事情,但發送數據到瀏覽器時,它的變化,因此用戶不是經常要求查看是否已作出更改。

+0

http://www.html5rocks.com/en/tutorials/eventsource/basics/這是一個更好的鏈接,並提供了SSE和websockets之間的比較加上演示 – jampez77

+0

,但我並不完全支持html5 ?所以? –

+0

啊好點....有時我忘了我在無IE的環境中工作 – jampez77

0

我寫了幾次。 Ajax與來自數據庫的輪詢聊天實際上不是真正的聊天。你是對的,使用間隔來輪詢數據糟透了。無論如何,這是解決方案(唯一真正的解決方案)。

You need to read this book。如果你沒有jabber服務器,我會給你acces(用戶註冊更新等)。閱讀這本書,然後與我聯繫。這是XMPP + Strophe圖書館聊天(谷歌和臉書正在使用什麼)!所以最好重新開始並學習新的東西!