既然都用WebSocket了,其實完全可以用WebSocket向伺服器提交數據,就不需要用AJAX再開一個HTTP連接了.
樓主的在線客服系統要把用戶的消息保存到資料庫,可以考慮先把消息存儲在Redis里,在連接關閉時再把消息存儲到MySQL,這樣就變成了一個連接(WebSocket或HTTP keep-alive)對應一次資料庫批量寫,性能更好.
伺服器端建議用PHP的Swoole,處理WebSocket請求就3個事件(onOpen/onMessage/onClose)的事.
不過需要注意的是,一些瀏覽器如IE9/IE8都是不支持WebSocket協議的,這時你可以考慮降級到HTTP(Swoole監聽onRequest事件就能處理HTTP),用一個HTTP(AJAX)長輪詢連接來實現消息通知,伺服器端用Redis的PubSub實現消息通知,Swoole提供有非同步Redis客戶端,能實現非同步訂閱Redis頻道實時獲取消息.