我正在編寫一個小型的基於Web的即時消息客戶端,它運行良好,但是我遇到了一些問題。原型JavaScript Ajax FIFO隊列
該系統使用PHP和JavaScript編寫,它使用每個頁面上放置的身份驗證ID,當發出ajax請求時,它必須包含此身份驗證ID。這不是一個完美的系統,但我無法改變它。
的IM系統使用週期性執行人(Prototype庫),有2個週期調用它使:
- 更新聯繫人列表,因爲這並不經常更改它就會每隔30秒更新一次
- 檢查新消息,現在這種情況會持續5秒。
的問題是:
定期執行進行呼叫更新聯繫人列表,使用認證ID,在PHP側拿起該請求,檢查認證ID,執行任務,返回新的列表JSON格式以及用於後續請求的新身份驗證ID。
如果在第一個函數返回之前檢查新消息(定時)或發送消息(未定時),則認證ID尚未更新。因此它使用與先前請求相同的認證ID。該身份驗證ID被系統的PHP端拒絕。
我正在尋找一種將請求序列化爲FIFO樣式隊列的方法,這意味着可以將所有發出的ajax請求(檢查消息,檢查聯繫人,發送消息)推送到隊列中,並儘快執行先前的ajax調用已完成(100%完成並返回)