This demo is a work-in-progress
Presence Tracker is an example that demonstrates how the @fluidframework/presence package can be used to share data that does not require persistence between clients. The presence APIs are especially suited to data like real-time cursor positions, mouse pointer positions, and object selection.
In this example, presence is used to share both mouse position within the application window and the focus state of the application.
This implementation visualizes the Container in a standalone application, rather than using the webpack-fluid-loader
environment that many of our examples use. This implementation relies on
Tinylicious as the Fluid service, so it is invoked in the background
automatically when running the scripts . We bring our
own view that we bind to the data in the container.
You can run this example using the following steps:
- Enable corepack by running
corepack enable. - Run
pnpm installandpnpm run build:fast --nolintfrom theFluidFrameworkroot directory.- For an even faster build, you can add the package name to the build command, like this:
pnpm run build:fast --nolint @fluid-example/presence-tracker
- For an even faster build, you can add the package name to the build command, like this:
- Run
pnpm startfrom this directory and open http://localhost:8080 in a web browser to see the app running. - If you want to run the app against SharePoint, follow the instructions in webpack-fluid-loader to get auth credentials. Then run
pnpm start:spoorpnpm start:spo-dfand open http://localhost:8080 like above.
The tests in this example require that tinylicious be running. The tests execute against the "real app" running in Webpack's dev server; tinylicious is triggered in the background as part of the test invocation.
The presence APIs do not broadcast state unless multiple clients are connected, so it is necessary to run multiple clients to test that the presence data is correctly being exchanged between clients. The tests do this by creating multiple puppeteer clients and pointing them to the same URL. This partially works. However, the most crucial test, which verifies that changes from one client are reflected on the other, does not yet pass, and is thus skipped. See AB#28502 (https://dev.azure.com/fluidframework/internal/_workitems/edit/28502) for more details.
There are many ways to contribute to Fluid.
- Participate in Q&A in our GitHub Discussions.
- Submit bugs and help us verify fixes as they are checked in.
- Review the source code changes.
- Contribute bug fixes.
Detailed instructions for working in the repo can be found in the Wiki.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
This project may contain Microsoft trademarks or logos for Microsoft projects, products, or services. Use of these trademarks or logos must follow Microsoft’s Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.
Not finding what you're looking for in this README? Check out fluidframework.com.
Still not finding what you're looking for? Please file an issue.
Thank you!
This project may contain Microsoft trademarks or logos for Microsoft projects, products, or services.
Use of these trademarks or logos must follow Microsoft's Trademark & Brand Guidelines.
Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship.