我有一個寫在jquery上的聊天應用程序。當用戶發送消息時,該消息正被髮送到Java REST端點。但我也想聽聽迴應。我認爲每秒鐘聽其他REST端點會很好,因爲我不知道如何在Facebook中實現它。所以,如果有新消息,讓他們和顯示。如何在jQuery中做到這一點?jquery/angular scheduler implementation
0
A
回答
1
有幾個解決方案,但我建議你不要使用REST創建聊天應用程序。如果你想讓純JS從谷歌(它將是實時的)/ meteor或者絕對使用Websockets考慮firebase(你需要一個websocket服務器,你可以使用authobahnjs來訂閱該服務器)。
我意識到這是解決方案,它比REST更復雜,但如果你問我,也許你的客戶REST是真的不聊天/實時應用的最佳選擇...
試想情況下,你會有很多用戶在線,他們每個人不僅會發送很多查詢(如果他們寫得很快),還會每秒鐘檢查響應。現在想想如果網絡出現問題,你的服務器會發生什麼......你會得到噸'掛'連接等。
btw。那些嘗試過它的人(如過去一樣)會告訴你相同的信息,而不是通過輪詢REST上的消息進行輪詢! ;)
JQuery的方式... 好的,只需要注意在同一個元素上定義多個事件(這是使用Jquery時的經典之一),這裏有一個函數應該做你想做的事情(它的職位,但你能適應它):
var interval = 1000; // 1000 = 1 second, 3000 = 3 seconds
function doAjax() {
$.ajax({
type: 'POST',
url: 'chatController.php',
data: {action: 'getMessagesForUser', user: {user: 'data'}},
dataType: 'json',
success: function (data) {
//do something with results
},
complete: function (data) {
// Schedule the next
setTimeout(doAjax, interval);
}
});
}
setTimeout(doAjax, interval);
你也可以引進一些變量,將確保你不會做出另一個請求前一個完成之前等
相關問題
- 1. TFIDF:tf implementation
- 2. 在@implementation
- 3. TestCleanup()Implementation
- 4. 在@implementation
- 5. quicksort implementation
- 6. AsyncTask Implementation
- 7. is_member_function_pointer implementation
- 8. Facebook Like Button Implementation
- 9. MonadBaseControl IO ... StateT Implementation
- 10. Boost named_condition implementation
- 11. Debugging Mergesort Implementation
- 12. Nodejs Modules Implementation
- 13. SVD implementation map reduce
- 14. mod_auth_tkt -java implementation
- 15. FibonacciHeap increase_key implementation
- 16. C#:IComparable implementation private
- 17. node js browserify implementation
- 18. android viewPager implementation
- 19. #react-native - Onesignal implementation
- 20. Blocked CSR SPMV Implementation
- 21. Angular 2 Observables implementation
- 22. Session Override implementation
- 23. Blowfish objective-c implementation
- 24. mergesort和java implementation
- 25. methode JEE implementation
- 26. Linq.Dyanmic GroupJoin implementation
- 27. FloatingActionButton with checkable implementation
- 28. boost :: variant implementation
- 29. boost :: hana tag_of implementation
- 30. RESTful Chromless implementation
謝謝,但問題是我已經有基於運動衫的休息聊天應用服務器,我沒有寫它,我只是想用它 – avalon
然後(especia如果你對angular2有興趣,你會對Observable.interval(time)感興趣,看看這裏:http://stackoverflow.com/questions/36086596/periodically-updating-observable-value-in- angular2 - 在純JavaScript或jQuery中,您可能需要使用setTimeout函數,但我會採用角度方法... –
謝謝,您認爲在穩定性/性能/可伸縮性方面它是可以接受的嗎?謝謝 – avalon