开发人员经常发现自己需要在其Web应用程序中实现某种共享状态。精心策划这可能很耗时,并为写作,测试和维护代码库的工作引入另一层复杂性。您是否需要使用数据库(或类似Redis Cache)的基于服务器的方法?您是否想要一个客户端的解决方案,客户彼此传递数据?工程解决方案可以采用许多不同的形式,实施可能会变得复杂且耗时。
Daily的Client SDK for JavaScript已经提供了一些工具来简化仅客户端实现的功能,包括我们的koude0事件和custom user data功能。对于数据需求扩展到参与者对象或派遣"app-message"
事件不合适的情况,具有将所有参与者的数据斑点关联的能力可能很有用。
这就是为什么我们使用custom session data:一组新的呼叫对象实例方法来扩展JavaScript客户端状态功能,允许开发人员将状态存储在视频呼叫会话级别。此功能简化了每节分状态,满足了常见的UI,例如客户同步的布局更改和参与功能(例如民意调查或分组室),而无需其他基础架构。
在这篇文章中,我将从探索一些自定义会话数据的用例开始。然后,我将介绍我们现有的客户端状态功能,并阐明何时(以及如何使用!)。
在后续帖子中,我们将通过一个动手教程,其中我们将在简单的演示应用中使用此新功能。
自定义会话数据的用例
自定义会话数据可用于使用daily-js
的基于呼叫的实现。目前在Daily Prebuilt中尚未使用。但是,它确实为我们的日常预制的breakout rooms feature提供了动力,这是如何使用这种新功能的一个很好的例子。
这里只是我们每天从事开发人员听到的其他一些自定义会话数据用例:
- 国家驱动的UI/布局更改(在事件或实时健身中常见,类似于OBS场景)
- 参与功能,例如民意调查或问答
- 登台功能
那么,您如何在使用自定义会话数据,"app-message"
事件,自定义用户数据或服务器端实现之间做出决定?让我们仔细看看。
何时使用自定义会话数据
- 使用自定义会话状态将会话分析数据发送给所有现有和新的呼叫参与者。
- 任何呼叫参与者都可以设置自定义会话数据,并且自定义会话数据与任何一个参与者都没有绑定。
一个示例可能是设置任何参与者都可以更新的范围内的消息(这是我们在即将到来的自定义会话数据教程中构建的内容!)
如何使用自定义会话数据
对于自定义会话数据,您将使用以下呼叫对象实例方法和事件:
何时使用"app-message"
事件
- 使用
"app-message"
事件发送 参与者分组 现有呼叫参与者之间的数据。 - 每个参与者只能代表自己发送
"app-message"
事件。
首选"app-message"
的一个示例可以是聊天实现。每个呼叫客户端将向所有其他客户端发送"app-message"
事件以广播其聊天消息。
如何使用"app-message"
对于"app-message"
事件,您将使用以下呼叫对象构造:
koude14:向一个或多个用户发送应用程序消息的方法。
koude0:事件警告呼叫参与者到传入消息。
何时使用自定义用户数据
- 使用自定义用户数据发送 参与者分组 向所有现有的数据以及 new 致电参与者。<<<<<<<<<<< /li>
- 参与者只能发送其 自己的 本地数据。
可以使用自定义用户数据的一个示例是跟踪参与者是否抬起手。实际上,实际上将其用于我们自己的每日预制手工饲养功能(我们喜欢在这里吃狗粮。)
)如何使用自定义用户数据
对于自定义用户数据,您将使用以下呼叫对象实例方法和事件:
- koude16:设置自己的用户数据的方法。
- koude17:检索所有呼叫参与者的方法,这也提供了对每个参与者的用户数据的访问。
- koude18:当任何参与者更新时,请提醒呼叫参与者的活动。当参与者的用户数据也已更新时,这将发出。
何时使用服务器组件
您还可以将自己的服务器组件用于状态处理和传达相关状态以致电参与者。这两种常见方法包括WebSocket或HTTP。当服务器组件可以优先于客户端处理时,一些可能的方案包括:
- 处理敏感数据,需要API密钥或其他秘密才能访问。
- 处理数据需要在任何一个客户的控制之外进行其他验证(即避免篡改。)
- 处理可能需要其他处理的数据出于性能原因,您可能需要将其卸载到服务器。 我以前写过有关choosing between koude0 and WebSockets的文章,以发送数据来致电参与者,并且大多数文章也适用于自定义用户数据和自定义会话数据。
结论
现在,您应该拥有使用每日新的自定义会话数据功能开始使用的所有信息。更重要的是,您应该对何时使用哪些客户端状态功能(以及何时使用服务器!)有一个可靠的掌握!
请注意即将发布的帖子,并提供自定义会话数据的动手教程。
如果您对特定用例有任何疑问,我们的support team总是很乐意提供帮助。另外,您可以在peerConnection, our WebRTC community伸出援手。