https://github.com/y-js/y-serviceworker
ServiceWorker connector for Yjs
https://github.com/y-js/y-serviceworker
Last synced: about 1 month ago
JSON representation
ServiceWorker connector for Yjs
- Host: GitHub
- URL: https://github.com/y-js/y-serviceworker
- Owner: y-js
- License: mit
- Created: 2017-04-11T13:27:15.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2017-05-03T16:50:18.000Z (about 8 years ago)
- Last Synced: 2025-03-24T18:47:09.856Z (2 months ago)
- Language: JavaScript
- Size: 17.6 KB
- Stars: 5
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Service Worker Connector for [Yjs](https://github.com/y-js/yjs)
It enables communication with a [Service Worker](https://developer.mozilla.org/en/docs/Web/API/Service_Worker_API) thread.
The Shared Worker can handle connections, and save changes using a persistent database (e.g. [y-indexeddb](https://github.com/y-js/y-indexeddb)),
while the clients connect to the service worker leveraging improved performance. You can also set it up to perform background tasks.* Only the Shared Worker connects to the server / other clients (less connection overhead)
* Works best with y-indexeddb
* Faster start-up when multiple windows are open
* Background tasks## Use it!
Retrieve this with bower or npm.##### NPM
```bash
npm install y-serviceworker --save
```##### Bower
```bash
bower install y-serviceworker --save
```### Example
```javascript
// register yjs service worker
if('serviceWorker' in navigator){
// Register service worker
// it is important to copy yjs-sw-template to the root directory!
navigator.serviceWorker.register('./yjs-sw-template.js').then(function(reg){
console.log("Yjs service worker registration succeeded. Scope is " + reg.scope);
}).catch(function(err){
console.error("Yjs service worker registration failed with error " + err);
})
}// Connect to the service worker
Y({
db: {
name: 'memory'
},
connector: {
name: 'serviceworker',
room: 'my room name'
},
share: {
textarea: 'Text' // y.share.textarea is of type Y.Text
}
}).then(function (y) {
// bind the textarea to a shared text element
y.share.textarea.bind(document.getElementById('textfield'))
}
```## License
[y-serviceworker](https://github.com/y-js/y-serviceworker) is licensed under the [MIT License](./LICENSE).