是否有任何理由混合使用WebSockets和XHR?

时间:2015-07-17 09:43:56

标签: javascript websocket xmlhttprequest

我正在开发SPA - 一些功能需要实时双向通信,有些则不需要。

在这里混用XHR和Websockets有什么理由吗?

我怀疑因为我还需要使用WebSockets,只需使用WebSockets就可以了,但我想知道是否有任何考虑因素我没有考虑过。

2 个答案:

答案 0 :(得分:0)

这取决于XHR请求的结果与websocket连接的比较?通过不创建HTTP标头并允许传输更大量的数据,Websocket通常更快。

根据经验,我会非常努力地使应用程序中的所有请求/交易相同 - 应用DRY原则可以使您和其他必须参与项目工作的人生活得更轻松。

答案 1 :(得分:0)

这实际上取决于您在应用程序中所做的事情。你用这句话说明了你的头脑:

  

某些功能需要实时双向通信,有些则不需要。

如果你需要一个实时的全双工通信通道,那么通过HTTP进行轮询,长轮询,流媒体等攻击只是为了保持同样的API无处不在,这可能是一种痛苦。

对于websockets也一样。如果您在一个地方使用websockets将所有内容切换到websockets以在任何地方使用相同的API可能会变得很痛苦。

Websocket技术仍在成熟,它还没有像Ajax(HTTP)那样享受全套工具或框架。许多服务器端和客户端框架都可以轻松处理通过Ajax访问的RESTful API。 Not quite so for websockets yet。出于这个原因,对于大量用例,坚持使用Ajax并仅在必要时使用websockets是有意义的。

风格也有区别。在RESTful API中,您正在导航资源URL,在websocket中,您只有一个接收命令的端点。如果你可以在一种风格中适应所有交互,那么使用一种风格,只要确保你没有从仍然以Ajax / HTTP为中心的工具/框架中丢失一些东西。