2009-11-07 125 views
2

我必須在ASP.NET中爲朋友編寫Ajax聊天Web應用程序,並且我有一個問題:如果client1向client2發送消息,應用程序應該如何將消息發送給客戶端2?有沒有比向服務器發送請求更好的方法,「詢問」是否有新消息?是否可以直接將消息發送給客戶端?ASP.NET中的聊天應用程序

回答

0

請記住HTTP是一個無狀態協議,並且每個事務都是從客戶端到服務器。

服務器可以使用會話來確定這個客戶端是否「已知」,但是使用普通舊HTTP發送信息回到客戶端我認爲這是不可能的(我的意思是從服務器發起的連接,而不是對客戶端)

您將需要使用Javascript來輪詢服務器的信息。

如果您想要另一種方式,您可能會使用Java或Flash,但是您還需要考慮NAT隧道,代理服務器以及客戶端可能使用的任何其他奇怪設置。

+0

您絕對可以使用持久HTTP連接。所以我不認爲這是不可能的。 – 2009-11-07 14:12:14

+0

感謝您的-1。你說的工作,但我認爲ASP.NET限制爲20個同時PHTTP連接。我認爲你可以提高到100.需要研究這一點。 – Wayne 2009-11-07 14:27:38

0

不,我不認爲服務器可以發送消息到客戶端的瀏覽器。 這裏是我如何實現聊天應用:通過Ajax

  1. 客戶端1後消息服務器
  2. 服務器保存到存儲庫(我使用這種情況下singleton對象)
  3. 客戶機程序得到庫中的消息
  4. 將郵件標記爲已讀

我會保存聊天記錄到數據庫一次聊天會話關閉或已過期。