goabstract/y-websocket is tracked by TopGit as an open-source project, with 2 stars on GitHub, written primarily in JavaScript.
Snapshot summary built from the project's own GitHub metadata — there's no written TopGit review yet. The page will update automatically when a full review is published.
WHY NO REVIEW YET
TopGit writes full reviews for the most-starred, most-requested repositories. This page is a snapshot until then — see the READ ME tab for the original README in full.
The Websocket Provider implements a classical client server model. Clients connect to a single endpoint over Websocket. The server distributes awareness information and document updates among clients.
The Websocket Provider is a solid choice if you want a central source that handles authentication and authorization. Websockets also send header information and cookies, so you can use existing authentication mechanisms with this server.
Supports cross-tab communication. When you open the same document in the same browser, changes on the document are exchanged via cross-tab communication (Broadcast Channel and localStorage as fallback).
Supports exchange of awareness information (e.g. cursors).
Quick Start
Install dependencies
npm i y-websocket
Start a y-websocket server
This repository implements a basic server that you can adopt to your specific use-case. (source code)
Start a y-websocket server:
HOST=localhost PORT=1234 npx y-websocket-server
Client Code:
import * as Y from 'yjs'
import { WebsocketProvider } from 'y-websocket'
const doc = new Y.Doc()
const wsProvider = new WebsocketProvider('ws://localhost:1234', 'my-roomname', doc)
wsProvider.on('status', event => {
console.log(event.status) // logs "connected" or "disconnected"
})
Client Code in Node.js
The WebSocket provider requires a WebSocket object to create connection to a server. You can polyfill WebSocket support in Node.js using the ws package.
Create a new websocket-provider instance. As long as this provider, or the connected ydoc, is not destroyed, the changes will be synced to other clients via the connected server. Optionally, you may specify a configuration object. The following default values of wsOpts can be overwritten.
wsOpts = {
// Set this to `false` if you want to connect manually using wsProvider.connect()
connect: true,
// Specify a query-string that will be url-encoded and attached to the `serverUrl`
// I.e. params = { auth: "bearer" } will be transformed to "?auth=bearer"
params: {}, // Object<string,string>
// You may polyill the Websocket object (https://developer.mozilla.org/en-US/docs/Web/API/WebSocket).
// E.g. In nodejs, you could specify WebsocketPolyfill = require('ws')
WebsocketPolyfill: Websocket,
// Specify an existing Awareness instance - see https://github.com/yjs/y-protocols
awareness: new awarenessProtocol.Awareness(ydoc)
}
wsProvider.wsconnected: boolean
True if this instance is currently connected to the server.
wsProvider.wsconnecting: boolean
True if this instance is currently connecting to the server.
wsProvider.shouldConnect: boolean
If false, the client will not try to reconnect.
wsProvider.bcconnected: boolean
True if this instance is currently communicating to other browser-windows via BroadcastChannel.
wsProvider.synced: boolean
True if this instance is currently connected and synced with the server./dd>
wsProvider.disconnect()
Disconnect from the server and don't try to reconnect.
wsProvider.connect()
Establish a websocket connection to the websocket-server. Call this if you recently disconnected or if you set wsOpts.connect = false.
wsProvider.destroy()
Destroy this wsProvider instance. Disconnects from the server and removes all event handlers.
Add an event listener for the sync event that is fired when the client received content from the server.
Websocket Server
Start a y-websocket server:
HOST=localhost PORT=1234 npx y-websocket-server
Since npm symlinks the y-websocket-server executable from your local ./node_modules/.bin folder, you can simply run npx. The PORT environment variable already defaults to 1234, and HOST defaults to localhost.
Send a debounced callback to an HTTP server (POST) on document update. Note that this implementation doesn't implement a retry logic in case the CALLBACK_URL does not work.
Can take the following ENV variables:
CALLBACK_URL : Callback server URL
CALLBACK_DEBOUNCE_WAIT : Debounce time between callbacks (in ms). Defaults to 2000 ms
CALLBACK_DEBOUNCE_MAXWAIT : Maximum time to wait before callback. Defaults to 10 seconds
CALLBACK_TIMEOUT : Timeout for the HTTP call. Defaults to 5 seconds
CALLBACK_OBJECTS : JSON of shared objects to get data ('{"SHARED_OBJECT_NAME":"SHARED_OBJECT_TYPE}')
This sends a debounced callback to localhost:3000 2 seconds after receiving an update (default DEBOUNCE_WAIT) with the data of an XmlFragment named "prosemirror" in the body.
Does goabstract/y-websocket have a project website?
No homepage URL was recorded for goabstract/y-websocket in TopGit's last sync. The README tab above frequently contains screenshots and demo links, or check the repository description on GitHub.
How many stars does goabstract/y-websocket have?
goabstract/y-websocket has 2 GitHub stars — refresh the page for the live number, or check github.com/goabstract/y-websocket. TopGit mirrors GitHub's count but does not claim minute-by-minute accuracy.
Is goabstract/y-websocket open source?
Yes — goabstract/y-websocket ships under the MIT license, which makes its source code freely readable (and, depending on license terms, forkable and reusable). Source: github.com/goabstract/y-websocket.
What is goabstract/y-websocket?
goabstract/y-websocket (goabstract/y-websocket) is a JavaScript project tracked by TopGit. The repository has 2 GitHub stars at the time of our last sync.
Where do I read more about goabstract/y-websocket?
This TopGit page is a snapshot — the READ ME tab shows the project's own README content (links stripped, images preserved). The GitHub repository at github.com/goabstract/y-websocket is the definitive source.
Read full README in the tab above.
Curious whether y-websocket is right for you?
Let ChatGPT, Claude, or Perplexity look into it — click below and see what AI actually says about y-websocket.