【问题标题】:node.js SPA webapp - all communications via websocketsnode.js SPA webapp - 通过 websockets 进行的所有通信
【发布时间】:2014-01-25 09:03:30
【问题描述】:

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

谢谢。

更新:

无论如何我都有 websocket,因为我的应用是多房间聊天。

【问题讨论】:

    标签: node.js rest websocket


    【解决方案1】:

    即使您只考虑 RPC(“远程过程调用”),REST 的能力也不如 WebSocket。

    REST,因为它通过 HTTP 运行,所以不能通过管道传输 RPC。每个 HTTP 连接只能同步服务 1 个 RPC。并且浏览器会限制到给定源的并行 HTTP 连接数。

    使用 RPC over WebSocket,您可以通过管道触发 100 个 RPC,并在 RPC 返回时异步处理它们。

    然后,使用 WebSocket,您也可以拥有服务器启动的通知。例如。您可以拥有完整的发布和订阅。

    WAMP(“Web 应用程序消息传递协议”)运行在 WebSocket 之上,专门为此而设计:SPA 需要 1 个协议中的 2 种消息传递模式 - RPC 和 PubSub。

    免责声明:我是 WAMP 的原作者,为 Tavendo 工作。

    【讨论】:

      【解决方案2】:

      如果服务器需要不确定的时间来准备数据,这可能是个好主意 基本上没有理由将 websocket(socket.io) 用于 REST API。

      由于 REST API 代表什么,您不必保持连接稳定,也不必等待广播服务器等某人的操作。

      编辑回答评论

      即使你已经用过websocket,也不代表你不能处理正常的req/res。

      带有 websocket 的 RESTapi 就像

      获取请求 -> 服务器响应 -> 客户端尝试 io.connect(); -> 建立连接 -> 服务器通过 websocket 向客户端发送数据

      和普通的 REST API 一样

      获取请求 -> 服务器响应

      你选哪个?

      【讨论】:

      • 但是如果我有 websockets 怎么办?我已经更新了问题
      猜你喜欢
      • 2012-09-26
      • 2016-05-28
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      相关资源
      最近更新 更多