2014-03-03 43 views
1

我正在創建一個具有聊天功能的應用程序,並且我決定爲此使用NodeJS/socket.io。我的項目也使用PHP,我想將我的應用程序中的數據存儲在MySQL服務器中。這就是目前發生我是否破壞了使用NodeJS/socket.io與我的AJAX腳本的好處?

socket.on(客戶端連接) - > AJAX腳本,將新客戶的用戶名MySQL數據庫(我想保持連接到MySQL中聊天的用戶的列表)

任何人發送消息 - > AJAX腳本把該消息的時間戳的版本爲MySQL數據庫(聊天記錄)

socket.off - > AJAX腳本從

我使用這麼多的MySQL數據庫中刪除客戶端AJAX,我毀了使用socket.io的好處?據我的理解:我仍然獲得與socket.io的實時連接的好處,並且我的AJAX在我的PHP服務器上導致了單獨的負載,但是這些AJAX操作不應該中斷或阻止Node。但是,這將在PHP服務器上單獨加載減慢客戶端socket.io連接?我是Node/socket.io的新手,所以我可能會漏掉一些關於後端操作的基本知識。

回答

1

這不會破壞websocket,但很明顯這是服務器不必要的重載。你爲什麼要使用AJAX?爲什麼不直接從Node更新數據庫?
這些AJAX調用將永久地打到服務器上,肯定會造成麻煩。使用websocket(也是long-polling)的原因之一是避免過度的負載。如果PHP和Node.js都在同一臺服務器上,那麼過載會降低兩者的速度。

當用戶(又名套接字)連接/斷開時,Node.js可以將該用戶添加/刪除到MySQL。如果Node.js服務器位於不同的計算機上,請爲該單獨的服務器提供MySQL遠程連接。
和消息一樣,直接從Node.js腳本更新數據庫。

在這裏有針對MySQL節點司機:https://www.npmjs.org/package/mysql

+0

謝謝你的詳細解答和快速反應......我有點懷疑MySQL驅動程序節點,因爲我想用我的PDO數據庫來處理,但我一定會讀到那個驅動程序。謝謝!! – user3374923

相關問題