node.js SPA webapp - 通过websockets进行的所有通信

时间:2014-01-25 09:03:31

标签: node.js rest websocket

我有一个SPA应用程序(客户端上的Backbone和服务器上的node.js)。所有双向通信都是通过websockets进行的。现在我想知道 - 这是个好主意?方法之前有什么缺点:客户端通过REST API将数据发送到服务器,服务器通过websockets将数据发送到客户端?

感谢。

UPD:

我在任何情况下都有websockets,因为我的应用程序是多房间聊天。

2 个答案:

答案 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类似

获取请求 - >服务器响应

你选择哪个?