我正在开发SPA - 一些功能需要实时双向通信,有些则不需要。
在这里混用XHR和Websockets有什么理由吗?
我怀疑因为我还需要使用WebSockets,只需使用WebSockets就可以了,但我想知道是否有任何考虑因素我没有考虑过。
答案 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为中心的工具/框架中丢失一些东西。