在 angular 中使用 websockets 时,是否有任何 need/advantage 使用 http 客户端服务调用 api?
Is there any need/advantage of calling an api using the http client service when using websockets in angular?
我正在尝试通过使用 socket.io 库和 MEAN 堆栈构建一个简单的聊天应用来学习如何使用 socket.io。
通过查看一些开源项目(like this one)我发现客户端主要是在执行聊天逻辑时,通过websockets与服务器通信,而不是[=22]提供的http客户端服务=].
这是否意味着当使用 web-sockets 进行实时更新时,不需要使用 http 与服务器通信?
当然不会。不过,这不是 angular 的问题,只是为正确的事情选择正确的工具。
长话短说:
- 如果是request/response型号,则使用http。为什么?
- 因为比较好办。代理、dns 和负载平衡器不需要额外的配置来处理。 Web 套接字可以。
- 您已经设置了 1,所以这不是问题。您将如何处理缓存、路由、gziping、SEO 以及 http 协议和 rest-apis 处理的所有开箱即用的东西?您构建的所有内容、所有通信都需要自己的安全考虑、设计模式等。
- 您将如何处理网络套接字的状态特性?它们目前仅支持垂直缩放,而 rest api 水平和垂直缩放。
如果你真的需要全双工通信(只有服务器推送没有套接字),那么你应该将网络套接字的使用限制在你真正需要的情况下。
即使在这种情况下,也要通过 signalR 这样的框架。所有现代浏览器都支持 websockets,但许多用户仍然没有支持它们的浏览器。在这些情况下,SignalR 回退到长轮询。如果你在所有情况下都使用它,想象一下如果你使用这样的浏览器并对每个请求应用长轮询会发生什么。
我可以继续,但我想你明白了意思。
我正在尝试通过使用 socket.io 库和 MEAN 堆栈构建一个简单的聊天应用来学习如何使用 socket.io。
通过查看一些开源项目(like this one)我发现客户端主要是在执行聊天逻辑时,通过websockets与服务器通信,而不是[=22]提供的http客户端服务=].
这是否意味着当使用 web-sockets 进行实时更新时,不需要使用 http 与服务器通信?
当然不会。不过,这不是 angular 的问题,只是为正确的事情选择正确的工具。
长话短说:
- 如果是request/response型号,则使用http。为什么?
- 因为比较好办。代理、dns 和负载平衡器不需要额外的配置来处理。 Web 套接字可以。
- 您已经设置了 1,所以这不是问题。您将如何处理缓存、路由、gziping、SEO 以及 http 协议和 rest-apis 处理的所有开箱即用的东西?您构建的所有内容、所有通信都需要自己的安全考虑、设计模式等。
- 您将如何处理网络套接字的状态特性?它们目前仅支持垂直缩放,而 rest api 水平和垂直缩放。
如果你真的需要全双工通信(只有服务器推送没有套接字),那么你应该将网络套接字的使用限制在你真正需要的情况下。
即使在这种情况下,也要通过 signalR 这样的框架。所有现代浏览器都支持 websockets,但许多用户仍然没有支持它们的浏览器。在这些情况下,SignalR 回退到长轮询。如果你在所有情况下都使用它,想象一下如果你使用这样的浏览器并对每个请求应用长轮询会发生什么。
我可以继续,但我想你明白了意思。