-
Notifications
You must be signed in to change notification settings - Fork 537
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
513 changed files
with
8,283 additions
and
3,229 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
--- | ||
"@fluidframework/presence": minor | ||
--- | ||
--- | ||
"section": feature | ||
--- | ||
|
||
Presence updates are now batched and throttled | ||
|
||
Presence updates are grouped together and throttled to prevent flooding the network with messages when presence values are rapidly updated. This means the presence infrastructure will not immediately broadcast updates but will broadcast them after a configurable delay. | ||
|
||
The `allowableUpdateLatencyMs` property configures how long a local update may be delayed under normal circumstances, enabling batching with other updates. The default `allowableUpdateLatencyMs` is **60 milliseconds** but may be (1) specified during configuration of a [States Workspace](https://github.com/microsoft/FluidFramework/tree/main/packages/framework/presence#value-managers#states-workspace) or [Value Manager](https://github.com/microsoft/FluidFramework/tree/main/packages/framework/presence#value-managers#value-managers) and/or (2) updated later using the `controls` member of Workspace or Value Manager. [States Workspace](https://github.com/microsoft/FluidFramework/tree/main/packages/framework/presence#value-managers#states-workspace) configuration applies when a Value Manager does not have its own setting. | ||
|
||
Notifications are never queued; they effectively always have an `allowableUpdateLatencyMs` of 0. However, they may be batched with other updates that were already queued. | ||
|
||
Note that due to throttling, clients receiving updates may not see updates for all values set by another. For example, | ||
with `Latest*ValueManagers`, the only value sent is the value at the time the outgoing batched message is sent. Previous | ||
values set by the client will not be broadcast or seen by other clients. | ||
|
||
#### Example | ||
|
||
You can configure the batching and throttling behavior using the `allowableUpdateLatencyMs` property as in the following example: | ||
|
||
```ts | ||
// Configure a states workspace | ||
const stateWorkspace = presence.getStates("app:v1states", | ||
{ | ||
// This value manager has an allowable latency of 100ms. | ||
position: Latest({ x: 0, y: 0 }, { allowableUpdateLatencyMs: 100 }), | ||
// This value manager uses the workspace default. | ||
count: Latest({ num: 0 }), | ||
}, | ||
// Specify the default for all value managers in this workspace to 200ms, | ||
// overriding the default value of 60ms. | ||
{ allowableUpdateLatencyMs: 200 } | ||
); | ||
|
||
// Temporarily set count updates to send as soon as possible | ||
const countState = stateWorkspace.props.count; | ||
countState.controls.allowableUpdateLatencyMs = 0; | ||
countState.local = { num: 5000 }; | ||
|
||
// Reset the update latency to the workspace default | ||
countState.controls.allowableUpdateLatencyMs = undefined; | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
--- | ||
"@fluidframework/presence": minor | ||
--- | ||
--- | ||
"section": feature | ||
--- | ||
|
||
`off` event deregistration pattern now supported | ||
|
||
Event subscriptions within `@fluidframework/presence` may now use `off` to deregister event listeners, including initial listeners provided to `Notifications`. | ||
|
||
Some type names have shifted within the API though no consumers are expected to be using those types directly. The most visible rename is `NotificationSubscribable` to `NotificationListenable`. Other shifts are to use types now exported thru `@fluidframework/core-interfaces` where the most notable is `ISubscribable` that is now `Listenable`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -100,7 +100,7 @@ | |
"@fluidframework/azure-service-utils-previous": "npm:@fluidframework/[email protected]", | ||
"@fluidframework/build-common": "^2.0.3", | ||
"@fluidframework/build-tools": "^0.51.0", | ||
"@fluidframework/eslint-config-fluid": "^5.4.0", | ||
"@fluidframework/eslint-config-fluid": "^5.6.0", | ||
"@microsoft/api-extractor": "7.47.8", | ||
"@types/jsrsasign": "^10.5.12", | ||
"@types/uuid": "^9.0.2", | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.