我正在研究一个需要实时事件的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