我正在向我的Vue 3应用程序添加后端发送的通知。
我的Django后台生成通知并保存到用户收件箱;在那里它们可以在任何时间被访问和读取。
我试图决定哪种方式最适合前端接收此类通知。基本上,我在两个选项之间左右为难:
- 使用轮询;类似于20秒的
setInterval
,它只是进行REST调用以获取用户的最新通知 - 打开WebSocket;每次有新的通知时,服务器都会推送一条消息
我更倾向于使用WebSocket选项;然而,我关心的是:
1.复杂性:必须管理重新连接以及工作站可能出现的所有问题
1.性能:我预测一次最多有200-300个用户;那么多打开的WS连接是否是一个可能的问题?
权衡这些因素,哪一个会更好地满足我的需求?您将如何减轻所选方法的缺点?
2条答案
按热度按时间qaxu7uf21#
在我看来,通知系统的最佳解决方案是使用WebScokets,如socket.io。如果使用HTTP请求,服务器每隔几十秒就会收到大约300个请求,这对服务器来说是一个很大的负担。2在这种情况下,大多数请求都是不必要的(用户未收到任何通知)。使用套接字,服务器将仅在收到通知时向客户端发送通知。套接字的另一个优点是通知会立即到来,而不是每隔一段时间就发出一次。
WebSockets通知系统的优点:
缺点:
atmip9wb2#
WebSocket是最好的解决方案在您的情况下,我使用的vue-native-websocket插件。