SPA:仅使用websockets。为什么不?

时间:2014-06-03 19:12:45

标签: websocket single-page-application

我正在重新设计一个Web应用程序,该应用程序以前已经在服务器端呈现给单页应用程序,并开始阅读有关websockets的内容。 Web应用程序将使用套接字将新记录和/或消息推送到客户端。我一直在想为什么大多数使用套接字的页面都不能处理它们在套接字上的所有通信。除了websocket之外,大多数时候都有RESTful后端。让客户端通过套接字查询新资源是不是一个坏主意?如果是这样,为什么 - 除了RESTful api可能更容易与其他设备一起使用?

我可以想象,如果网络连接在移动设备上有点糟糕,那么使用websockets可能不是最好的选择,但这可能与网络的合理连接相得益彰。

我发现了这个相关的问题,但它是从2011年开始,似乎有点过时了: websocket api to replace rest api?

2 个答案:

答案 0 :(得分:4)

不,这不是一个坏主意。实际上我在一个使用WebSocket连接的应用程序中处理所有数据交互,Web服务器只处理资源请求,不同语言下的视图,维度等等。

问题可能是缺乏基于持久连接的框架/工具。多年来,大多数框架(前端和后端)都是围绕请求/响应模型设计和构建的。接近转变可能不容易接受。

答案 1 :(得分:1)

几年后回到这个问题,我想指出几个方面来说明通过websocket进行所有通信确实有其缺点:

  • 没有通用的压缩支持。您可以轻松地将Web服务器配置为压缩HTTP请求,并且众所周知,浏览器多年来一直很乐意接受压缩响应,但是对于Web套接字,它并不是那么容易(即使情况有所改善)
  • 客户客户端框架通常建立在诸如REST之类的常用标准之上。您离框架期望值越远,附加组件或功能就越少。 在浏览器中缓存
  • 并不容易。到目前为止,这已经走了很长一段路要走,进入离线可用性和PWA领域。