我有一個很老的應用程序,但我們有我們的聊天功能的PHP API,它有兩個主要功能:獲取最後20條消息並將新消息插入數據庫。Socket.io與其餘的API
目前,我們正在使用AJAX更新數據,但我希望更快地更新數據。
是否有可能將socket.io連接到某些php API?我試圖在這個主題上搜索一些東西,但沒有好的例子。你可以給我一點點推動,我可以如何實現這樣的事情?
- 用戶連接到的NodeJS其與消息返回JSON服務器
- 當新用戶添加的信息,的NodeJS服務器呼叫API用於將新的消息發送到數據庫,並且它觸發「新的郵件」事件後的
- 當nodejs服務器收聽事件「新消息」時,它從數據庫中提取數據,將其格式化爲json並觸發事件「數據更新」,其他用戶監聽事件「數據更新」 ,他們只是在json中得到一個新的消息列表
我的想法是,這可以像某些緩存層一樣工作,因爲數據庫中的數據只會被提取一次(通過觸發事件),然後作爲靜態json提供給用戶。
感謝您的任何幫助。
注意:我需要使用舊的php api,因爲在服務器上處理的聊天格式中有一些特殊功能。從頭開始重寫它是不可能的。當只有一些新數據時,我只想使用socket.io將數據從服務器推送到用戶。現在,即使沒有新消息,並且當然會創建不必要的數據庫連接等,他們仍會使用ajax調用新數據。
感謝您的回答!你爲什麼認爲它不會提高性能?我的想法是,每個客戶端都在下載靜態數據,並且只有當有新消息時,節點服務器纔會連接到php rest api,然後獲取它們,然後服務於所有客戶端。在這種情況下,如果有1000個或2000個客戶端,則不重要,因爲從數據庫中獲取數據只需要完成一次(當有新消息時)。但也許我錯過了一些東西,或者我的想法太過於理想化了...... –
我只是不太瞭解你的概念。你現在描述的應該會產生更好的性能,因爲如果這只是從HTTP完成,那麼將需要1000或2000個唯一的http請求,並且所有這些都需要頭從服務器飛到客戶端,所以我相信你的想法很好。 – itsundefined