我有一个SPA应用程序(客户端上的Backbone和服务器上的node.js)。所有双向通信都是通过websockets进行的。现在我想知道 - 这是个好主意?方法之前有什么缺点:客户端通过REST API将数据发送到服务器,服务器通过websockets将数据发送到客户端?
感谢。
UPD:
我在任何情况下都有websockets,因为我的应用程序是多房间聊天。
答案 0 :(得分:2)
即使您只考虑RPC(“远程过程调用”),REST的能力也低于WebSocket。
REST,因为它在HTTP上运行,所以无法管道RPC。每个HTTP连接只能同步提供1个RPC。浏览器限制了到给定源的并行HTTP连接数。
使用RPC over WebSocket,您可以启动100个流水线的RPC,并在它们进入时异步处理RPC返回。
然后,使用WebSocket,您也可以获得服务器启动的通知。例如。你可以有完整风味的Publish&订阅
WAMP(“Web应用程序消息传递协议”)在WebSocket上运行,其设计正是如此:在1个协议中需要2种消息模式的SPA - RPC和PubSub。
免责声明:我是WAMP的原创作者并为Tavendo工作。
答案 1 :(得分:1)
如果服务器需要不确定的时间来准备数据,那么它可能是一个好主意 基本上没有理由使用websocket(socket.io)来实现REST API。
因为REST API代表什么,你不必保持连接稳定,也不必等待广播服务器之类的某些动作。
EDIT回复评论
即使你已经使用过websocket,也并不意味着你无法处理正常的req / res。
使用websocket的RESTapi就像
获取请求 - >服务器响应 - >客户端尝试io.connect(); - >已建立连接 - >服务器通过websocket
向客户端发送数据和普通的REST API类似
获取请求 - >服务器响应
你选择哪个?