【问题标题】:REST API or websocket? [closed]REST API 还是 websocket? [关闭]
【发布时间】:2014-09-17 03:32:54
【问题描述】:

我正在开发需要实时事件的网络应用程序和移动应用程序(例如我需要推送到其他客户端的聊天)。我使用 node、mongodb、angular、phonegap。

我已经开始通过 socket.io 混合 REST API 和事件,但我正在考虑将其转换为 100% websocket 应用程序。

我知道开发会有点困难,但什么是最适合您的解决方案?

提前致谢!

【问题讨论】:

    标签: node.js angularjs rest websocket


    【解决方案1】:

    如果您想支持大量客户端,异步技术绝对是首选。异步使服务器能够随时向客户端发送数据。休息只是客户端到服务器。所以你需要进行轮询,这确实是昂贵且低效的。

    Websocket 也更好,因为它在网络上使用的数据更少。连接后不依赖HTTP。实际建立了一个 TCP 连接。如果有一些代理,你可能要小心。

    Websocket 本身就是一个简单的线路,除了发送/接收之外没有添加任何协议。所以你需要上面的东西来管理频道和订阅。 STOMP 通常用于此目的。你可以看看 stomp.js。

    您也可以考虑 SSE。它没有 web-socket 复杂,依赖 HTTP,所以更健谈。好吧,web-socket 并不复杂,有一些库可以提供帮助。

    您还可以将 websocket 混合用于您的部分 api,并将 REST 保留用于另一部分。你必须评估什么是有意义的。

    一些资源:

    【讨论】:

    • 谢谢,我已经查看了 SSE,但这并不是我正在搜索的内容。我想我会坚持这种方式,并在我的应用程序中使用 websockets。
    【解决方案2】:

    您可能对 WAMP (http://wamp.ws/) 感兴趣,它在 WebSocket 之上提供灵活的应用程序消息传递:

    • 远程过程调用(大致对应于 REST)
    • 发布和订阅(用于实时推送/通知)

    免责声明:我是 WAMP 的原作者,为 Tavendo 工作。

    【讨论】:

    • 不,谢谢,我只会使用 websocket,但我会为您的网站添加书签以供其他应用程序使用;)
    • @oberstet 你能解释一下我如何将 REST API + WebSocket 用于带有广播系统的 CRUD 应用程序。例如对我更新的博客文章的评论存储在数据库表中并广播给所有有权访问该博客文章的用户。
    • @AshwinP 当然。您能否为此提交一个新问题并在此处链接?在评论中回答很乏味。比如:“如何通过实时通知丰富 REST/CRUD 应用程序?”
    • stackoverflow.com/questions/25301340/… 不知道有没有可能。
    【解决方案3】:

    嗯,它的使用问题。很久以前,当我开始使用 NodeJS 时,我有机会同时使用 SocketIO 和 ExpressJS。
    所以我可以建议为正确的事情使用正确的工具。如果它的意思是实时的,例如发送消息,聊天等 SocketIO 很好,但是如果要求通过网络访问某些资源很简单,实际上不需要实时实现,请在客户端使用使用 ajax 或其他东西的基本 REST api。它还有助于捕获数据,从而减少服务器上的负载。

    您可以在 nodejs 应用程序中同时实现这两个堆栈,即 SocketIO 和一些 RESTful 实现库。

    【讨论】:

    • 谢谢,所以我将使用 websocket,因为我的应用程序需要实时,我认为 websocket 是一个很好的技术学习:)。
    • 嗯...downvoter ..请解释一下!
    猜你喜欢
    • 1970-01-01
    • 2011-10-11
    • 2020-10-31
    • 2015-04-21
    • 2015-10-08
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    相关资源
    最近更新 更多