2013-07-04 43 views
0

我目前工作的一個Web應用程序在數據庫中,我工作的一個聊天應用程序的功能。我想創建一個使用WebSockets的實時聊天功能,並phpwebsocket作爲WS服務器,我想在一個數據庫中記錄的聊天記錄,我的問題是,它下面的一個將在用戶體驗方面的最佳實踐和Web服務器的性能:查詢一個WebSocket伺服器

  1. 每當客戶端發送消息,該消息首先通過AJAX發送到服務器和腳本進行必要的處理,並記錄到數據庫中,然後返回true,那麼成功就將信息返回給客戶端,然後回調函數將消息發送給websocket服務器,服務器將其中繼給接收者。
  2. 每當客戶端發送一個消息,該消息被髮送到服務器的WebSocket和WebSocket的確實的處理和張貼到數據庫,然後成功就將該消息中繼給收件人。

我的第二個選項的關注是把WebSocket的服務器上的負載太大,因爲它是服務於不同的客戶一個腳本.....任何幫助,將不勝感激

回答

1

對於聊天解決方案,只要你知道你有限的IE支持(IE9不能做websockets),websockets似乎是更好的方法。

現在,關於你的關心,這將是一個不錯的方案來運行一個POC,但作爲一個建議,我認爲表現將在這兩種情況下類似的,因爲它會由應用服務器處理。如果事實證明數據庫訪問是一個問題,您仍然可以找到一些解決方案,比如將消息放在某種異步隊列中,並讓一些單獨的進程將它們寫入數據庫。這隻有在成功的數據庫寫入不重要或不需要響應時纔有效。

+0

謝謝您的答覆,如果我可能會問我怎麼去把消息在異步隊列,一個例子可以理解的。再次感謝 – Emjiz

+0

嗨,首先我要開始一個容量研究。如果您有任何性能問題,排隊只會是明智的,但如果您使用ajax請求,則會有相同的風險。這裏是你可以用PHP做的一個例子:http://www.ebrueggeman.com/blog/creating-a-message-queue-in-php – Martin

+0

感謝名單馬丁,我來方便,我就接受你的建議和首先進行體積研究。感謝您的幫助 – Emjiz