我正在寻找一种解决方案,其中服务器将发送数据而无需从UI端调用任何API。 基本上,在我的应用程序中有两个面板 1.接待员仪表板 2.访客移动应用程序。 如果有任何来自访客应用程序的请求,则该请求应自动显示在“接待员”仪表板中,而无需刷新页面(隐式/显式)。
我尝试过的方法。
1.每分钟page refresh
之后,API将自动调用并
用旧数据获取新数据。
但是在这种情况下,每隔一分钟就会发生一次服务器调用,即使
如果没有与此相关的新请求。
2.我使用了web socket programming
,但是在这种情况下code debug
是
主要挑战。
除了这些以外,还有其他解决方案吗?如果没有,那么我该如何解决我面临的问题。
答案 0 :(得分:0)
您可以使用signalR。它与Web服务器保持永久连接,并允许从客户端到服务器的通知,看起来像您所需要的。
答案 1 :(得分:0)
您可以从服务器创建一个持久性响应流,该持久性响应流将在同一响应流中为每个来宾请求写入新数据,并且在前端,您可以为该请求的数据建立一个侦听器。这样,单个请求将得以维护,数据将得到及时更新。
答案 2 :(得分:0)
TL; DR
由于您不知道新数据何时到达服务器,因此让客户端请求数据不是您所提到的理想数据。我想到了三种选择,实时数据库,推送通知和WebSockets。
WebSockets似乎是一个不错的选择,因为您可以轻松地在服务器端实现它,并且大多数现代浏览器已经原生实现了它。您提到很难调试,但是您知道Chrome对它的支持[1]吗?
- 启动Chrome开发者工具
- 加载页面并启动WebSocket连接
- 点击“网络”标签。
- 从左侧列表中选择WebSocket连接(状态为“ 101交换协议”。
- 单击“框架”子选项卡。二进制帧将显示长度和时间戳,并指示是否被遮罩。文字框将 显示还包括有效载荷内容。
实时数据库
Firebase提供多种服务,其中之一是实时数据库(旧版本)和 firestore数据库(新版本)。使用他们的SDK,您可以从服务器端更新数据库,并在客户端侦听更改。在客户端,您将使用observables
,并且一旦数据库发生更改(如果您正在侦听更改),您将在客户端上接收该数据,而无需执行请求。 SDK最有可能提出请求,但老实说,我不知道它们如何处理,但这减轻了开发人员的负担。可以为许多请求付费,但是值得一看。
推送通知
类似地,Firebase(和其他公司,例如Amazon)向您提供推送通知/云消息服务,该服务可让您将数据发送到客户端,而无需客户端发出请求。通过使用在 Service Worker API [2]之上构建的 Notification API 和 Push API 可以正常工作。此技术的优点是,即使用户关闭了应用程序,您也可以通知用户。
WebSockets
WebSockets允许您建立双向通信,然后允许各方(客户端和服务器)彼此发送数据。与传统的WebSocket相比,Socket.IO之类的某些工具为您提供了更多的控制和功能(通道/房间,自动重新连接等),而这会带来一些开销。