ws-lib-by-private
v1.0.0
Published
graphql clients sharing a single web socket connection across browsing contexts (such as tabs, windows, or iframes).
Downloads
702
Maintainers
Readme
✨ Features
- Share a single web socket across all the clients across all the browsing contexts (across browser tabs, windows iframes, etc...).
- GraphQL subscriptions are indexed by their payloads, preventing duplicate requests and responses across browsing contexts.
- A drop-in graphql-ws wrapper with an identical API.
📦 Installation
npm install graphql-shared-ws💻 Usage
🚀 Initialize and subscribe
import { createSharedClient } from 'graphql-shared-ws'
// create a client.
const sharedClient = createSharedClient({
url: 'wss://example.com/api/graphql',
})
// make a grpahql subscription
sharedClient.subscribe(
{
query: `
subscription listenToMessages {
messageBroadcasted
}
`,
},
{
next: (n) => {
console.log(`Last broadcasted message =`, n.data.messageBroadcasted)
},
complete: () => {
console.log('subscription closed.')
},
error: console.error,
}
)📦 Migration from graphql-ws library
🚀 In most cases, updating the import statements will be sufficient.
// Before migration
import { createClient } from 'graphql-ws'
// After migration
import { createSharedClient as createClient } from 'graphql-shared-ws'In case you are using custom WebSocket implementation, pass the implementation to SharedWorker.
🔌 API Reference
This library implements the exact same API as graphql-ws. For complete usage guides, configuration options, and type definitions, please refer to the official graphql-ws documentation.
👥 Community & Support
💬 Have an idea? Suggest new features in GitHub Discussions.
✨ Support me or my projects through donations via GitHub Sponsors.
💼 Need custom work or consultation? I am available for hire! Reach out via email.
