我正在研究一個需要實時事件的web應用程序和移動應用程序(例如我需要推送到其他客戶端的聊天)。我使用node,mongodb,angular,phonegap。REST API或websocket?
我已經開始通過socket.io的REST API和事件的混合,但我想在100%websocket應用程序中進行轉換。
我知道開發會有點困難,但對您而言最好的解決方案是什麼?
在此先感謝!
我正在研究一個需要實時事件的web應用程序和移動應用程序(例如我需要推送到其他客戶端的聊天)。我使用node,mongodb,angular,phonegap。REST API或websocket?
我已經開始通過socket.io的REST API和事件的混合,但我想在100%websocket應用程序中進行轉換。
我知道開發會有點困難,但對您而言最好的解決方案是什麼?
在此先感謝!
如果您想支持大量的客戶端,異步技術絕對是您的選擇。異步使服務器隨時可以向客戶端發送數據。休息只是客戶端到服務器。所以你需要調查哪些代價高昂且效率低下。
Websocket也更好,因爲它在網絡上使用更少的數據。連接後不依賴於HTTP。 TCP連接實際上已建立。如果有一些代理,你可能要小心。
Websocket本身是一個簡單的電線,除了發送/接收之外,沒有添加任何協議。所以你需要上面的東西來管理頻道和訂閱。 STOMP通常用於此目的。你可以看看stomp.js。
您也可以考慮上證所。它比網絡套接字更簡單,依賴於HTTP,因此更加健談。那麼web-socket不是很複雜,有些庫可以提供幫助。
您也可以將websocket混合爲您的api的一部分,並將REST保留爲另一部分。你必須評估什麼是有道理的。
一些資源:
好,它的使用問題。當我開始使用NodeJS時,我有機會使用SocketIO和ExpressJS。
所以我可以建議使用正確的工具正確的事情。如果它的意思是實時發送消息,聊天等SocketIO是好的,但如果要求通過網絡訪問某些資源很簡單,那實際上並不需要實時實現,可以使用基本的REST api使用ajax或客戶端的東西。它還有助於捕獲數據,從而減少服務器上的負載。
您可以在nodejs應用程序中將兩個堆棧一起實現,即SocketIO和一些RESTful實現庫。
您可能會感興趣的WAMP(http://wamp.ws/),其上的WebSocket的頂部提供了靈活的應用程序的消息:
聲明:我是WAMP的原創作者,併爲Tavendo工作。
謝謝,我看看SSE,但它不完全是我正在搜索。我想我會堅持這種方式,併爲我的應用程序使用websockets。 – Jowy