我正在寻找一种解决方案,服务器将发送数据,而无需从 UI 端调用任何 API。 基本上,在我的应用程序中有两个面板 1. 接待员仪表板 2. 访客移动应用程序。 如果任何请求来自访客应用程序,则该请求应自动显示在接待员仪表板中,而无需刷新页面(隐式/显式)。
我尝试过这些方法。
1. 每分钟页面刷新
后自动调用API
用旧数据得到新数据。
但在这种情况下,每隔一分钟就会发生服务器调用,即使
如果没有与此相关的新请求。
2.我使用了Web套接字编程
,但在这种情况下代码调试
是
主要挑战。
除了这些还有其他解决办法吗?如果没有,那么我该如何解决我面临的问题。
最佳答案
TL;DR
由于您不知道新数据何时到达服务器,因此让客户端请求数据并不理想,正如您已经提到的那样。我想到了三种替代方案:实时数据库、推送通知和 WebSocket。
WebSockets 似乎是一个不错的选择,因为您可以轻松地在服务器端实现它,并且大多数现代浏览器已经在 native 实现了它。您提到它很难调试,但是您知道 Chrome 对它的支持吗[ 1 ]?
- Launch Chrome Developer tools
- Load your page and initiate the WebSocket connections
- Click the Network Tab.
- Select the WebSocket connection from the list on the left (it will have status of "101 Switching Protocols".
- Click the Frames sub-tab. Binary frames will show up with a length and time-stamp and indicate whether they are masked. Text frames will show also include the payload content.
实时数据库
Firebase 提供多种服务,其中之一是实时数据库(旧版本)和firestore 数据库(新版本)。使用他们的 SDK,您可以从服务器端更新数据库并监听客户端的更改。在客户端,您将使用可观察对象,一旦数据库发生更改(如果您正在监听更改),您将在客户端上收到该数据,而无需执行请求。 SDK 很可能会提出请求,但老实说,我不知道他们如何处理这个问题,但这减轻了开发人员的负担。许多请求都是付费的,但值得一看。
推送通知
类似地,Firebase(以及其他公司,例如 Amazon)为您提供推送通知/云消息传递服务,该服务允许您将数据发送到客户端,而无需客户端发出请求。这是通过使用构建在 Service Worker API 之上的 Notification API 和 Push API 来实现的 [ 2 ]。这种技术的优点是即使用户关闭了应用程序,您也可以通知用户。
WebSocket
WebSockets 允许您建立双向通信,然后允许各方(客户端和服务器)相互发送数据。一些工具如 Socket.IO与传统的 WebSocket 相比,它为您提供更多的控制和功能( channel /房间、自动重新连接等),但需要一些开销。
关于java - 自动发送数据到客户端,无需API调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57269247/