我有一个应用程序,其主要功能通过websocket或长时间轮询实时运行。
但是,大多数站点都是以RESTful方式编写的,这对将来的应用程序和其他客户端非常有用。但是,我正在考虑从REST过渡到用于所有站点功能的websocket API。这将使我更容易将实时功能集成到网站的所有部分。这会增加构建应用程序或移动客户端的难度吗?
我发现有些人已经在做这样的事情:SocketStream
并不是说这里的其他答案没有道理,它们提出了一些优点。但是,我将违背普遍的共识,并同意您的看法,将Websockets不仅用于实时功能是非常吸引人的。
我正在认真考虑通过websocket将我的应用程序从RESTful架构迁移到更多的RPC样式。这不是一个“玩具应用程序”,我不是在谈论实时功能,所以我确实有保留。但是,我认为走这条路有很多好处,并认为这可能是一个出色的解决方案。
我的计划是使用DNode,SocketIO和Backbone。使用这些工具,只需调用RPC样式的函数,即可在客户端和服务器之间来回传递我的Backbone模型和集合。不再需要管理REST端点,序列化/反序列化对象等等。我尚未使用socketstream,但值得一试。
在我可以肯定地说这是一个很好的解决方案之前,我还有很长的路要走,我敢肯定这不是每个应用程序的最佳解决方案,但是我坚信这种组合将异常强大。我承认存在一些缺点,例如失去缓存资源的能力。但是我感觉优势将胜过它们。
我有兴趣关注您在探索这种解决方案方面的进展。如果您有任何github实验,请指向我。我还没有,但希望很快。
以下是我一直在收集的待读链接的列表。我不能保证它们都是值得的,因为我只浏览了其中许多。但希望能有所帮助。
关于将Socket.IO与Express结合使用的出色教程。它向socket.io公开了快速会话,并讨论了如何为每个经过身份验证的用户提供不同的房间。
关于具有身份验证,Joyent托管等的node.js / socket.io / backbone.js / express / connect / jade / redis教程:
关于将Pusher与Backbone.js结合使用的教程(使用Rails):
使用客户端上的ribs.js和服务器上的express,socket.io,dnode的node.js构建应用程序。
在DNode中使用Backbone: