Registry / realtime / loro-websocket

loro-websocket

JSON →
library0.6.2jsnpmunverified

WebSocket client and minimal SimpleServer for syncing Loro CRDTs. Version 0.6.2, actively maintained, with peer dependency on loro-crdt ^1.9.0. Features: auto-reconnect with exponential backoff, latency tracking via ping/pong, safe fragmentation/reassembly for large updates, seamless room rejoin across reconnects, E2EE support via EloAdaptor. Differentiator: tightly integrated with Loro CRDT ecosystem, provides a simple server for prototyping, and offers both plain and encrypted adaptors.

npm install loro-websocket
INSTALL
IMPORT
SIG · LORO-WEBSOCKET
L
loro-websocket
realtimejavascriptv0.6.2
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

LoroWebsocketClient
import { LoroWebsocketClient } from 'loro-websocket'
import LoroWebsocketClient from 'loro-websocket'
Named export, not default export.
ClientStatus
import { ClientStatus } from 'loro-websocket'
import { Status } from 'loro-websocket'
Exported as ClientStatus, not Status.
LoroAdaptor
import { LoroAdaptor } from 'loro-adaptors/loro'
import LoroAdaptor from 'loro-adaptors'
Named export from subpath 'loro-adaptors/loro'.
EloAdaptor
import { EloAdaptor } from 'loro-adaptors/loro'
import { EloAdaptor } from 'loro-websocket'
Exported by loro-adaptors, not loro-websocket.

Connects to a WebSocket server, joins a room, modifies a CRDT document, and cleans up.

import { WebSocket } from 'ws'; (globalThis as any).WebSocket = WebSocket as unknown as typeof globalThis.WebSocket; import { LoroWebsocketClient, ClientStatus } from 'loro-websocket'; import { LoroAdaptor } from 'loro-adaptors/loro'; const client = new LoroWebsocketClient({ url: 'ws://localhost:8787' }); const offStatus = client.onStatusChange(s => console.log('status:', s)); await client.waitConnected(); const adaptor = new LoroAdaptor(); const room = await client.join({ roomId: 'demo', crdtAdaptor: adaptor }); const text = adaptor.getDoc().getText('content'); text.insert(0, 'Hello, Loro!'); adaptor.getDoc().commit(); await room.destroy(); offStatus();
Debug
Known issues
gotchaIn Node.js, you must provide a WebSocket implementation globally before importing LoroWebsocketClient.
fix
Assign (globalThis as any).WebSocket = require('ws') (or import { WebSocket } from 'ws') before any loro-websocket import.
affects: >=0.1.0
breakingClientStatus values are strings, not enum members; use type ClientStatusValue from the library.
fix
Use ClientStatus.Connecting, ClientStatus.Connected, ClientStatus.Disconnected as string literals.
affects: >=0.5.0
deprecatedLoroAdaptor and EloAdaptor are now provided by loro-adaptors package, not loro-websocket.
fix
Install loro-adaptors and import adaptors from 'loro-adaptors/loro' instead of 'loro-websocket'.
affects: >=0.6.0
Errors
Common errors & fixes
TypeError: LoroWebsocketClient is not a constructor
Using default import instead of named import.
fix
Use import { LoroWebsocketClient } from 'loro-websocket'
Error: WebSocket is not defined
Running in Node.js without providing a WebSocket implementation.
fix
Install ws and set (globalThis as any).WebSocket = require('ws') before importing loro-websocket.
Cannot find module 'loro-adaptors/loro' or its corresponding type declarations.
Missing peer dependency loro-adaptors.
fix
Run: pnpm add loro-adaptors
Upgrade
Version history
0.6.2latest on npm
Audit
Dependencies
loro-crdtrequiredPeer dependency: CRDT document engine required for synchronization.
loro-adaptorsrequiredProvides LoroAdaptor and EloAdaptor needed to join rooms.
wsoptionalRequired in Node.js environment to provide WebSocket implementation.
loro-protocolrequiredProtocol definitions used for communication.
Agent activity
34 hits · last 30 days
node
26
OpenAI (training)
1
Resources
loro-websocket — npm install loro-websocket · libregistry