我正在创建一个应用程序( ),但在确定将数据发送到 API( )和检索实时更新Nuxtjs的好方法时遇到了麻烦。expressjs看来我可以使用两个协议 [Server Sent Events( SSE) 和Axios/或 Websocket( WS)] 创建“bi-di”连接。
这两种技术都适用于大多数浏览器,所以我认为不需要添加额外的库,例如socket.io- 对于那些没有当前浏览器的人(太糟糕了)。
该应用程序基于表单数据/点击的用户输入。然后用该信息通知/更新其他用户。在这一点上,用户可以响应并且链继续(基本的聊天,如流程,一些信息将被快速交换,而有些可能不会或永远不会)。
以我的经验,用户流将更多地依赖于侦听更改而不是实际更改数据 - 因此我正在考虑SSE。不幸的是,这两种协议都有其缺陷。
网络套接字:
- 并非所有组件都需要
WS获取/发布信息,因此以额外的服务器费用升级基本 http 连接是没有意义的。因此需要另一种方法WS(Axios/SSR)。Example: Checking to see if a user name exists - 安全防火墙可能会阻止
WS正常运行 express-ws使 API 端的套接字变得简单- 我相信一个用户可以拥有超过 6 个并发连接(可能是赞成和反对)
服务器发送事件
- 似乎技术正在衰落,有利于
WS - 监听事件似乎和监听事件一样简单
WS - 无需升级连接,但必须
node-spdy在API 中使用 -由于多路复用expressjs,这也可能是一个很好的实现WS - 更多的后端代码来设置
http2和发出SSEs(丑陋的代码也是如此 - 所以将制作函数) - 仅限于 HTTP 限制(6 个并发连接),这是一个问题,因为用户可以轻松地将其最大化(即打开多个聊天窗口)
TLDR
该应用程序将更加以“供稿”为导向,偶尔发布(可由 处理Axios)。但是,用户将收听多个“提要”,HTTP 限制将成为问题。我不知道解决方案是什么,因为SSE似乎是更好的选择,因为我不需要不断握手。如果这次握手真的无关紧要(从我读过的所有内容来看并非如此),那么WS可能是一个更好的选择。不幸的是,关于这两者的信息有太多相互矛盾的信息。
想法?