我有一个 SPA 应用程序(客户端上的 Backbone 和服务器上的 Node.js)。所有双向通信都是通过 Websocket 进行的。现在我想知道 - 这是个好主意吗?之前的方法有哪些缺点:客户端通过 REST API 向服务器发送数据,服务器通过 websockets 向客户端发送数据?
谢谢。
更新:
无论如何,我都有网络套接字,因为我的应用程序是多房间聊天。
最佳答案
即使您只考虑 RPC(“远程过程调用”),REST 的能力也不及 WebSocket。
REST 由于通过 HTTP 运行,因此无法管道 RPC。每个 HTTP 连接只能同步服务 1 个 RPC。并且浏览器限制到给定源的并行 HTTP 连接的数量。
通过 WebSocket 上的 RPC,您可以启动 100 个管道化 RPC,并在 RPC 返回时异步处理它们。
然后,通过 WebSocket,您还可以拥有服务器启动的通知。例如。您可以享受完整的发布和订阅。
WAMP (“Web 应用程序消息传递协议(protocol)”)在 WebSocket 上运行,并且专门为此而设计:SPA 需要在 1 个协议(protocol)中使用 2 种消息传递模式 - RPC 和 PubSub。
免责声明:我是 WAMP 的原作者,为 Tavendo 工作。
关于node.js SPA webapp - 所有通信均通过 websockets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21348637/