2012-06-30 191 views
1

我要開發一個實時幫助聊天系統的基本功能是相似http://www.providesupport.comhttp://www.liveperson.com/聊天程序設計

我不能確定如何構建應用程序。我希望爲最終用戶提供基於Web的聊天腳本,以便與我們的支持人員進行交互,他們將使用管理控制檯管理不同的聊天。我計劃使用PHP/JavaScript/AJAX混合來實現最終用戶聊天和Java來構建管理面板。也將有一個MySQL數據庫來存儲設置/聊天等

我想包括的主要特徵是: - 支持多個併發聊天 - 多運營商 - 運營商之間 轉讓聊天 - 「用戶正在打字「通知 - 每個聊天到數據庫 記錄 - 在線/離線模式

我都拿出了系統的基本架構三種可能的方法特別是在聊天元素是如何工作的。我不確定哪種方法最好,希望你能指出我正確的直接方式,並指出我錯過的任何優點/缺點。

方法1 - 聊天

PHP的用戶聊天框寫入和包含聊天一個HTML文件中讀取靜態HTML文件。然後每隔幾秒重新加載一次該文件以確保顯示更新。 Java管理端也會做類似的事情。

優點: - 消息記錄在整個。 - 不同的運營商可以加載相同的聊天,讓用戶

缺點 的轉移 - - 運營商可以通過加載不同的HTML文件 管理不同的聊天記錄用戶鍵入的通知將需要一些不同的方法

方法2 - 用於存儲聊天的MySQL數據庫

當每個新消息都被輸入時,聊天將被寫入MySQL數據庫。管理員和用戶端會每隔幾秒檢查一次數據庫中的更新,如果已經發生,重新加載聊天窗口。

優點: - 由於每條消息都存儲在數據庫中,因此消息會始終記入日誌。 - 運營商可以通過不同的SQL管理不同的聊天記錄查詢 - 不同的運營商可以加載相同的聊天,讓用戶

缺點的轉移: - 用戶輸入時通知會需要一些不同的方法 - 該數據庫將得到非常大的 - 不斷查詢數據庫可以有較高的服務器的負載,併成爲慢用大表

方法3 - 直接套接字連接

的PHP網站EN d直接連接到他們正在與之交談的Java管理客戶端。所有的聊天數據都經過這個,然後當聊天結束時,它被寫入數據庫中存儲。

優點: - 將是快,當接收 新消息每一方都知道 - 「用戶正在輸入」的消息,可以通過套接字連接 發送 - 數據記錄

缺點: - 套接字連接可能會丟失,因此結束聊天。 - 不知道如何運營商之間聊天的轉讓將工作

摘要

因此,要總結,哪些方法是最好的?有沒有更好的方法,我沒有想到?我已經看過HTML5網絡套接字,但我需要一個良好的瀏覽器兼容性。

除此之外,根據管理員用戶是否登錄,我將如何實現在線/離線指示?

我是在一個更通用的概述,而不是代碼等?

感謝您的幫助。

回答

0

您是否考慮過socket.io以獲得真正的跨瀏覽器套接字?

否則,你可以使用已經爲此開發的東西,而不是重新發明輪子,就像已經存在的XMPP JS庫。

如果你想自己實現東西,最好的辦法就是ajax long-polling,不要重複加載頁面,而是提供某種web服務,並使用JS(或jQuery)與它進行通信,僅傳輸聊天相關數據。

+0

那麼你會建議一旦完成它們就使用套接字方式並將聊天存儲在數據庫中?在套接字上使用socket.io有什麼好處?你會建議socket.io通過XMPP,如果是這樣,爲什麼?謝謝。 – Joseph

+0

socket.io是一個實現,它試圖使用客戶端上最高效的套接字,然後逐一退出。好處是你總是獲得最有效的機制,缺點是你不得不使用node.js,因爲它是用該語言實現的。 – WhyNotHugo

+0

感謝您的解釋。我的理解是,node.js不會在我們當前的主機上運行,​​因此不幸的是在這種情況下不會成爲選項。 – Joseph