我正在创建一个应用程序( ),但在确定将数据发送到 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
和发出SSE
s(丑陋的代码也是如此 - 所以将制作函数) - 仅限于 HTTP 限制(6 个并发连接),这是一个问题,因为用户可以轻松地将其最大化(即打开多个聊天窗口)
TLDR
该应用程序将更加以“供稿”为导向,偶尔发布(可由 处理Axios
)。但是,用户将收听多个“提要”,HTTP 限制将成为问题。我不知道解决方案是什么,因为SSE
似乎是更好的选择,因为我不需要不断握手。如果这次握手真的无关紧要(从我读过的所有内容来看并非如此),那么WS
可能是一个更好的选择。不幸的是,关于这两者的信息有太多相互矛盾的信息。
想法?