socket.io vs swr 用于更新实时内容

Posted

技术标签:

【中文标题】socket.io vs swr 用于更新实时内容【英文标题】:socket.io vs swr for updating real-time content 【发布时间】:2021-01-22 18:38:03 【问题描述】:

我目前正在使用 next.js 构建一个 Web 应用程序,它需要跨设备实时更新,例如,如果有人加入了一个群组,则需要立即向该群组的所有现有成员显示。

目前,我最初是在页面加载时为用户获取数据,并在必要时使用 socket.io 更新内容。但是,我刚刚发现了 SWR 框架,它会在请求正文发生变化时自动更新内容。

我的问题是:我是坚持目前的方法还是使用 SWR 挂钩更好?目前,页面加载时正在获取大量数据,例如组、设置等,但是如果我使用多个 SWR 挂钩分别获取组、设置等会更有效吗?

【问题讨论】:

我想看看 Meteor。您所描述的(当服务器上发生更改时将数据推送到客户端)正是它的关键特性之一。在某些方面,它做了你认为 SWR 认为应该做的事情(乐观地说,我最初认为它也是如此)。 【参考方案1】:

我认为SWR 不会像您期望的那样做。它可以帮助您发送一个好的 ol' HTTP 请求,缓存它并在需要时刷新它(例如,在一定时间后更改道具、安装组件)。它做的最接近socket的事情可能是"polling on interval"。

例如,您可以将 SWR 设置为每 5 秒刷新一次数据,但这实际上不是“实时”连接。如果您的内容需要实时更新,我会说,坚持使用套接字。如果您想从 HTTP 服务器加载内容,不时对其进行缓存和重新验证,SWR 就是您的工具。

【讨论】:

以上是关于socket.io vs swr 用于更新实时内容的主要内容,如果未能解决你的问题,请参考以下文章

swr vs axios 与 setInterval 用于大型 json 数据和 React 中的高频率

如何使用 Socket.io 实时更新大量数据

通过 socket.io 更新实时 d3 图表

如何使用 mysql 数据库中的 nodejs 和 socket.io 在网页上获得实时更新?

MQTT vs Socket.IO 关于网络带宽使用

实时通信框架 Socket.IO