簡體   English   中英

帶有其余API的Socket.io

[英]Socket.io with the rest API

我有一個相當老的應用程序,但是我們有用於聊天功能的php API,它具有兩個主要功能:獲取最后20條消息並將新消息插入數據庫。

當前,我們正在使用AJAX來更新數據,但是我想更快地更新數據。

是否可以將socket.io連接到某些PHP API? 我嘗試搜索有關此主題的內容,但沒有很好的示例。 你能給我一點點推動力,讓我實現這樣的目標嗎?

  • 用戶連接到nodejs服務器,該服務器返回帶有消息的json
  • 當新用戶添加消息時,nodejs服務器調用用於向數據庫添加新消息的API,此后觸發“新消息”事件
  • 當nodejs服務器偵聽事件“新消息”時,它將從數據庫中獲取數據,將其格式化為json並觸發事件“數據已更新”
  • 當其他用戶收聽“數據更新”事件時,他們只是在json中獲得新的消息列表

我的想法是,這將與某些緩存層類似地工作,因為從數據庫中獲取的數據將僅被提取一次(通過觸發的事件),然后作為靜態json提供給用戶。

感謝您對此的任何幫助。

注意:由於服務器上處理的聊天格式中的某些特殊功能,我需要使用舊的php API。 無法從頭開始重寫它。 我只想使用socket.io在有一些新數據時將數據從服務器推送給用戶。 現在,即使沒有新消息,他們也會使用ajax調用新數據,並且當然會創建不必要的數據庫連接,等等。

WebSockets的速度不應該比AJAX快,但是您所描述的是實現此目的的正確方法。 NodeJS能夠將HTTP請求發送到另一台服務器(在您的情況下為php)。 在此處查看文檔: https : //nodejs.org/api/http.html#http_http_request_options_callback
或使用以下請求模塊: https : //www.npmjs.com/package/request以獲得更簡單的代碼。

不要忘記,在使用websocket將成功信息發送回客戶端之前,您的工作要求restAPI用HTTP響應。 這意味着您的性能提升將不會真的那么好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM