我应该使用哪种通信技术将数据流推送给网站用户[关闭]
Posted
技术标签:
【中文标题】我应该使用哪种通信技术将数据流推送给网站用户[关闭]【英文标题】:Which communication technology should I use for pushing data stream to the website users [closed] 【发布时间】:2018-07-19 07:56:38 【问题描述】:我正在建立一个网站,我希望允许用户订阅各种实时数据流。他们将订阅少量流,只要它们连接,它就会将数据推送回来。问题是,哪种技术更适合这个:Server Send Eventets、Websockets、HTTP/2、Comet?我应该使用什么来获得最佳结果?我的目标是拥有大量用户。将感谢您的答案为我指明最佳方向。
【问题讨论】:
【参考方案1】:在讨论 the role of AJAX(对于 CRUD 非常有用,而不是在轮询时)和比较 Websocket performance vs. AJAX performance(涉及实时更新时,Websockets 总是更快)时,已经讨论过这一点。
Comet 和 SSE 是 HTTP 轮询的有趣风格,但最终它们只能在一定程度上减轻副作用,而 Websockets(通常与使用 Redis 或类似的 publish–subscribe pattern 结合使用)是完成这项工作的最佳工具.
【讨论】:
我正在用 Go 编写自己的后端来处理数据流。如果没有您的 redis 建议,我可能会重新发明***(我最近一直在阅读有关 redis 的文章)。非常感谢。 @orzel ,我很高兴能帮上忙 :-) 我假设我可以省略 WS 低开销的批处理? @orzel 可以省略批处理,但是(取决于您的应用程序逻辑),批处理可以通过最小化 TCP/IP 开销来改善 TCP/IP 打包和带宽,所以它仍然是一个好主意。 . 另一方面,我有时会避免批处理以支持模块化代码和关注点分离——尤其是当我使用允许我将发布/订阅直接转发到客户端的脚本语言时(跳过脚本层)。这是你的电话,真的。以上是关于我应该使用哪种通信技术将数据流推送给网站用户[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
有经验的 C++ 开发人员应该学习哪种 Web 技术? [关闭]
Flutter - 将 Firebase 通知推送给没有 Firebase 身份验证的特定用户
从视图访问消费者以通过 WebSocket (Django-Channelsv2.2 & DRF) 将 api 接收的数据推送给用户