Websocket API 取代 REST API?[已关闭]
我有一个应用程序,其主要功能通过websockets或长轮询实时工作。
但是,该网站的大部分内容都是以RESTful的方式编写的,这对于将来的应用程序和其他客户端来说很不错。但是,我正在考虑从REST过渡到所有站点功能的websocket API。这将使我更容易将实时功能集成到网站的所有部分中。这是否会使构建应用程序或移动客户端变得更加困难?
我发现有些人已经在做这样的事情了:SocketStream。
我有一个应用程序,其主要功能通过websockets或长轮询实时工作。
但是,该网站的大部分内容都是以RESTful的方式编写的,这对于将来的应用程序和其他客户端来说很不错。但是,我正在考虑从REST过渡到所有站点功能的websocket API。这将使我更容易将实时功能集成到网站的所有部分中。这是否会使构建应用程序或移动客户端变得更加困难?
我发现有些人已经在做这样的事情了:SocketStream。
并不是说这里的其他答案没有价值,他们提出了一些很好的观点。但是,我将违背普遍的共识,并同意你的观点,即转向websockets不仅仅是实时功能,这是非常有吸引力的。
我正在认真考虑通过websockets将我的应用程序从RESTful架构移动到更多的RPC风格。这不是一个“玩具应用程序”,我也不是在谈论实时功能,所以我确实有保留。但是我看到了走这条路有很多好处,并觉得它可能是一个特殊的解决方案。
我的计划是使用DNode,SocketIO和Backbone。使用这些工具,我的Backbone模型和集合可以通过简单地调用RPC样式的函数从/到客户端和服务器传递。不再需要管理 REST 终结点、序列化/反序列化对象等。我还没有使用套接字流,但它看起来值得一试。
在我能够明确地说这是一个很好的解决方案之前,我还有很长的路要走,而且我确信它不是每个应用程序的最佳解决方案,但我相信这种组合将非常强大。我承认存在一些缺点,例如失去缓存资源的能力。但我有一种感觉,优势将超过它们。
我有兴趣跟随您的进度来探索这种类型的解决方案。如果你有任何github实验,请指给我看。我还没有,但希望很快。
以下是我一直在收集的待读链接列表。我不能保证它们都是值得的,因为我只略读了其中的许多。但希望有些人会有所帮助。
关于在Express中使用 Socket.IO 的很棒的教程。它向 socket.io 公开了快速会话,并讨论了如何为每个经过身份验证的用户提供不同的聊天室。
关于node.js/socket.io/backbone.js/express/connect/jade/redis with authentication,Joyent hosting等的教程:
关于将推杆与骨干.js(使用导轨)的教程:
使用主干构建应用程序.js客户端和节点上.js在服务器上使用快速、socket.io、dnode。
将 Backbone 与 DNode 结合使用:
HTTP REST和WebSockets非常不同。HTTP是无状态的,因此Web服务器不需要知道任何东西,您可以在Web浏览器和代理中进行缓存。如果使用 WebSockets,则服务器将变为有状态,并且需要连接到服务器上的客户端。
仅当需要将数据从服务器推送到客户端时才使用 WebSockets,该通信模式不包含在 HTTP 中(仅通过变通办法)。如果其他客户端创建的事件需要对其他连接的客户端可用,例如在用户应该对其他客户端行为采取行动的游戏中,PUSH会很有帮助。或者,如果您的网站正在监控某些内容,则服务器始终将数据推送到客户端,例如股票市场(实时)。
如果您不需要从服务器推送数据,则使用无状态HTTP REST服务器通常更容易。HTTP 使用简单的请求-答复通信模式。