2011-10-19 64 views
1

我試圖在網上實現一個自定義的實時聊天程序,但我不知道如何處理用戶的實時(或接近實時)更新。每隔一秒鐘左右從客戶端發送Ajax請求,輪詢數據庫以獲取新評論會更有意義嗎?是否輪詢在網上進行實時聊天的方式?

是否有某種方式從數據庫中每次添加註釋時間播出呢?如果這是可能的,那將如何工作?我使用Sql Server 2008和Asp.net(c#)。

謝謝!

+3

Yarrr matey!它是[長期投票](http://stackoverflow.com/questions/tagged/long-polling),你壞血病的狗正在尋找。 –

+0

@ChrisShouts:啊,所以這叫做長輪詢。今天學到了一些東西。 – 2011-10-19 18:22:53

+0

[Comet implementation for ASP.NET?](http://stackoverflow.com/questions/65673/comet-implementation-for-asp-net) – RedFilter

回答

0

沒有。使用像RabiitMq或ActiveMQ的排隊系統。也檢查mongoDB。

排隊系統會給你一個發佈 - 訂閱設施。

+0

這個沒有任何意義。 Web瀏覽器如何直接將消息發佈到遠程消息隊列? –

+0

如果你願意,你甚至可以用javascript來做到這一點。 ActiveMQ有一個JavaScript庫。 –

2

你可以讓每個客戶端輪詢服務器,在服務器端保持無響應的問題打開連接。

一旦有在服務器側檢測到消息,通過已經打開的連接返回該數據。收到後,您的客戶立即發出新的請求。

有一些複雜,因爲你需要保持它的連接與該會話相關的跟蹤服務器端,並應在作出迴應,以防止超時。

我從來沒有這樣做過,但這應該是最節約資源的方式。