2014-07-25 52 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