我正在創建一個PHP/AJAX聊天客戶端。該應用程序向PHP腳本發出AJAX請求,該腳本獲取XML文件的內容並響應該內容。然後客戶端解析XML並顯示聊天記錄。 XML文件包含所有聊天記錄,但爲了節省服務器資源,我只希望PHP腳本返回新的聊天記錄,而不是所有聊天記錄。下面是我的XML文件:PHP/AJAX長輪詢:在可用時返回新內容
<?xml version="1.0" encoding="ISO-8859-1"?> <chat> <message> <hour>12</hour> <minute>06</minute> <half>AM</half> <day>Saturday</day> <month>March</month> <date>19th</date> <body>Hey Guys!</body> </message> <message> <hour>12</hour> <minute>08</minute> <half>AM</half> <day>Saturday</day> <month>March</month> <date>19th</date> <body>How are you?</body> </message> <message> <hour>3</hour> <minute>28</minute> <half>PM</half> <day>Saturday</day> <month>March</month> <date>19th</date> <body>Good, thanks!</body> </message> </chat>
的<message>
標籤定義了每一個新的聊天,標籤<hour>
,<minute>
,<half>
,<day>
,<month>
和<date>
定義每個聊天發送的時間,與<body>
包含每個聊天。
這是我想到的解決辦法:
- 添加一個標籤,告訴每個聊天是什麼號碼的XML文件:
<number>12</number>
- 在AJAX請求,讓客戶端發送最新的聊天的編號到PHP腳本以檢查它是否是最新的,然後讓PHP不斷檢查XML文件中
<number>
標籤的編號大於該編號,然後在數字更大時返回聊天。
我不知道這會工作得有多好,有沒有更好的方法來做到這一點?再次,我只想讓PHP腳本在他們來的時候返回新的聊天內容。有人能幫我解決問題嗎?或者指點我可能會發揮作用的東西?謝謝!
如果您可以查詢XML以僅接收超過特定時間戳的數據(例如, http://domain.com/chat.xml?id=1&time=7123612376 – Prisoner 2011-03-21 16:01:59