我目前正在使用 next.js 构建一个 Web 应用程序,它需要跨设备进行实时更新,例如,如果有人加入一个组,则需要立即为该组的所有现有成员显示。
目前,我最初是在页面加载时为用户获取数据,并在必要时使用 socket.io 更新内容。但是,我刚刚发现了 SWR 框架,它会在请求正文发生变化时自动更新内容。
我的问题是:我是坚持目前的方法还是使用 SWR 挂钩更好?目前,页面加载时正在获取相当多的数据,例如组、设置等,但是如果我使用多个 SWR 挂钩分别获取组、设置等会更有效吗?
我不认为SWR做你期望它做的事。它可以帮助您发送一个好的 ol' HTTP 请求,缓存它并在您需要时刷新它(例如,在一定时间后更改道具、安装组件)。它对套接字所做的最接近的事情可能是"polling on interval"。
例如,您可以将 SWR 设置为每 5 秒刷新一次数据,但这实际上不是“实时”连接。如果您的内容需要实时更新,我会说,坚持使用套接字。如果您想从 HTTP 服务器加载内容,不时对其进行缓存和重新验证,SWR 就是您的工具。