2010-12-03 58 views
3

我期待爲我們的公司網站之一構建在線客戶支持系統,並對結構進行了一些查詢。如何構建Web /客戶端支持聊天系統

情況是這樣的。我們希望我們網站的用戶能夠點擊「實時聊天支持」按鈕,此時他們會彈出一個窗口,試圖將他們連接到我們的支持團隊。

另一方面,我們的支持團隊將運行桌面客戶端。每當我們網站上的用戶點擊鏈接時,所有桌面客戶端都會「響起」。每當支持團隊成員「回答」呼叫時,其他客戶端將停止振鈴,並且該成員將開始與網絡用戶聊天。

鑑於我們的桌面客戶端將使用C#.NET中的WPF進行製作,並且我們的網站是ASP.NET MVC 2,那麼在兩者之間建立通信的最佳方式是什麼?

我最初的想法是讓網絡端存儲在SQL數據庫中的聊天,並以某種方式「ping」相關的桌面客戶端,告訴它更新其聊天記錄。類似的桌面到網頁。但我不確定如何在兩個不同的平臺之間執行此操作。如果它是桌面客戶端到桌面客戶端,我想它會容易得多,但事實並非如此。

此外,請記住,我意識到已經有商業應用程序在那裏這樣做。但是,我們需要一些超出簡單聊天的定製功能 - 它不值得進入具體細節,但基本上我們必須實現我們自己的解決方案。

任何幫助,非常感謝。

+0

您是否找到任何解決方案?我也在尋找相同類型的實現。你能分享你的想法嗎? – 2012-07-23 11:08:05

回答

0

Web技術是實現實時交互的不當平臺。當然可以這樣做,但您肯定會遇到可伸縮性,響應性和開發工作方面的問題。我強烈建議您仔細檢查您的需求,並考慮是否可以利用供應商產品完成您想要的工作。

如果你仍然想自己動手,你將不得不克服的主要障礙是如何將消息推送到瀏覽器。使用純Web技術「從瀏覽器」ping「瀏覽器是不可能的,因爲HTTP是建立在」只拉「請求/響應模型上的。服務器中的客戶端之間不存在持久連接。服務器完成將頁面發送到瀏覽器後,連接消失。

您可以輪詢Web服務器的新郵件,但這不是一個可擴展的解決方案。如果你只處理一個非常小的(比如說單位數)用戶,那麼這可能會起作用,但是你的響應速度將受到你輪詢的速度的限制,而且你輪詢的速度越快,這個解決方案的可伸縮性就越差是。

更好的解決方案是使用Silverlight,Flash或瀏覽器中運行的其他一些胖客戶端技術。然後你可以實現處理客戶端之間消息路由的服務。 This article on CodeProject可能是一個很好的開始。

+3

「'使用純Web技術從服務器Ping'瀏覽器是不可能的」 - 這[不再是](http://en.wikipedia.org/wiki/WebSockets)。 – josh3736 2010-12-03 19:05:03