2014-07-25 82 views
3

我正在研究一個需要實時事件的web應用程序和移動應用程序(例如我需要推送到其他客戶端的聊天)。我使用node,mongodb,angular,phonegap。REST API或websocket?

我已經開始通過socket.io的REST API和事件的混合,但我想在100%websocket應用程序中進行轉換。

我知道開發會有點困難,但對您而言最好的解決方案是什麼?

在此先感謝!

回答

2

如果您想支持大量的客戶端,異步技術絕對是您的選擇。異步使服務器隨時可以向客戶端發送數據。休息只是客戶端到服務器。所以你需要調查哪些代價高昂且效率低下。

Websocket也更好,因爲它在網絡上使用更少的數據。連接後不依賴於HTTP。 TCP連接實際上已建立。如果有一些代理,你可能要小心。

Websocket本身是一個簡單的電線,除了發送/接收之外,沒有添加任何協議。所以你需要上面的東西來管理頻道和訂閱。 STOMP通常用於此目的。你可以看看stomp.js。

您也可以考慮上證所。它比網絡套接字更簡單,依賴於HTTP,因此更加健談。那麼web-socket不是很複雜,有些庫可以提供幫助。

您也可以將websocket混合爲您的api的一部分,並將REST保留爲另一部分。你必須評估什麼是有道理的。

一些資源:

+0

謝謝,我看看SSE,但它不完全是我正在搜索。我想我會堅持這種方式,併爲我的應用程序使用websockets。 – Jowy

-1

好,它的使用問題。當我開始使用NodeJS時,我有機會使用SocketIO和ExpressJS。
所以我可以建議使用正確的工具正確的事情。如果它的意思是實時發送消息,聊天等SocketIO是好的,但如果要求通過網絡訪問某些資源很簡單,那實際上並不需要實時實現,可以使用基本的REST api使用ajax或客戶端的東西。它還有助於捕獲數據,從而減少服務器上的負載。

您可以在nodejs應用程序中將兩個堆棧一起實現,即SocketIO和一些RESTful實現庫。

+0

謝謝,所以我會與websocket合作,因爲我的應用需要實時,我認爲websocket是一個很好的技術來學習:)。 – Jowy

+0

yup ..享受! :) – agpt

+0

恩...... downvoter ..小心解釋plz! – agpt

1

您可能會感興趣的WAMP(http://wamp.ws/),其上的WebSocket的頂部提供了靈活的應用程序的消息:

  • 遠程過程調用(大致相當於REST)
  • 發佈&訂閱(實時推/通知)

聲明:我是WAMP的原創作者,併爲Tavendo工作。

+0

不,謝謝我將只使用websocket,但我將您的網站加入其他應用程序的書籤;) – Jowy

+0

@oberstet您能解釋我如何使用REST API + WebSocket用於廣播系統的CRUD應用程序。例如對博客帖子的評論由我在數據庫表和廣播中存儲的所有用戶訪問該博客帖子。 –

+0

@AshwinP當然。你能否提交一個新的問題,並鏈接到這裏?回答評論是乏味的。例如:「如何通過實時通知來豐富REST/CRUD應用程序?」 – oberstet